- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个具有以下结构的 Python 包:
├── setup.cfg
├── setup.py
└── src
└── myproject
├── base.py
├── __init__.py
└── version.py
setup.cfg
, 版本定义为
attr
:
[metadata]
name = myproject
version = attr: myproject.version.__version__
version.py
很简单:
__version__ = "1.2.3"
setup.cfg
中列出的依赖项.另一方面,包的顶级
__init__.py
导入包的一些对象:
from myproject.base import Stuff
__all__ = ["Stuff"]
base.py
从依赖项中导入一些对象。
python setup.py
当未安装依赖项时,我有一个
ModuleNotFoundError
/
ImportError
, 自
__init__.py
导入导入这些依赖项的对象(这对于
the Python documentation on managing version file 中的案例 6 非常有用):
python setup.py --version
Traceback (most recent call last):
<snip>
ModuleNotFoundError: No module named 'dependency_module'
__init__.py
上尝试了这种奇怪的异常处理方法。 :
try:
from myproject.base import Stuff
except ImportError:
pass
最佳答案
看起来您遇到了此处提交的问题:https://github.com/pypa/setuptools/issues/1724
你最好在 VERSION.txt
中写下你的版本号, 从 setup.cfg
阅读与 version = file: VERSION.txt
,并从您的 __init__.py
加载它与 import importlib_metadata; __version__ = importlib_metadata.version('myproject')
.
更新
包裹 importlib_metadata
is on PyPI for current Python versions并以 Python 3.8 in the standard library as importlib.metadata
开头.
综上所述,可以重新考虑将版本字符串放在单独的文件中的必要性。由于有一种直接的方法可以从代码中读取版本字符串,version.py
的目的是或 VERSION.txt
可能会丢失。
或者,我倾向于制作我的安装脚本 read the version string from the changelog反而。
更新 2020 年 11 月 3 日:
看起来像 attr:
的情况同时有所改善,多亏了这个 change .如果可能,使用 attr:
实际上并没有导入代码,因此 ModuleNotFoundError
最初在问题中报告不应该再发生了。已发布于 v46.4.0 on 16 May 2020 .
关于python-3.x - 使用 setup.cfg 和通过 attr 访问的版本时出现 ModuleNotFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58202909/
I have installed WeasyPrint==0.42.3 using pip3 install WeasyPrint==0.42.3, but when I try to impo
我正在从远程服务器设置Jupyter笔记本电脑环境。当我导入Notebook.auth时,它报告错误如下:。我的jupyter参数如下所示:。有人知道如何解决这个问题吗?我已经尝试了pip安装jupy
在运行命令时,我遇到了一个错误:Heroku run pythonManage.py Migrate。当我运行它时,它会出现错误:ModuleNotFoundError:没有名为‘Django’的模块
PC:Windows 11 WSL 2,ubuntu-22.04。我打算按照这些说明安装'cnntools'。安装后,我对其进行了测试。这件事就发生了。。我的电脑怎么了?我必须买一台新电脑吗?。我试过
我的文件夹结构是: |-fastapi |-app |-calc.py |-tests |-mytest.py 在 mytest.py 中,我尝试导入 calc.py,
假设我们有以下结构: outer_module.py| |subfolder| |__init__.py
我在 conda 中创建了一个新环境并安装了 yaml。 $ conda list | grep yaml yaml 0.1.7
我使用了来自 python-nmap 的 import nmap 模块,它在 Pycharm 中运行良好。 但是当我尝试在命令提示符下运行相同的程序时,出现错误: ModuleNotFoundErro
my_controller.py 如下: from models import Person david = Person('David') 我的项目结构是 app ├── controller │
我已经使用 tensorflow 构建了一个 python 脚本,现在我正在尝试将其转换为 .exe 文件,但遇到了问题。使用 pyinstaller 并从命令提示符运行程序后,我收到以下错误: Fi
我在网络驱动器上安装了 Python。我用了pushd命令进入同一网络驱动器上我的项目文件夹。我在那个文件夹中打开 python。我尝试导入该文件夹中的模块。一个 ModuleNotFoundErro
我的发行版是WinPython,我使用Spyder作为IDLE,我的python版本是3.6.5。 尽管我有很多模块(来自 WinPython 下载),例如 pip、pandas 和 numpy,它们
我在 macOS Mojave 版本 10.14.1 上使用 Python 3.7.1 这是我的目录结构: man/ Mans/
我的文件夹结构: ttsTacotron.py Tacotron-2 |.. |tacotron| |train.py |synthetizer.py
我正在使用 Python 3.6.0 和 pipenv。我在pycharm中有一个名为myapp的python项目,目录结构为 - myapp - src - __init__.py -
我利用自制程序安装 python3,现在无法运行使用关联的 pip3 二进制文件安装的模块。 from blackduck.HubRestApi import HubInstance username
我正在开发 Flask 应用程序并尝试运行我的测试文件,但无法执行此操作。我当前的应用程序结构是: Project ── app │ ├── __init__.py │ ├── forms.p
(在用重复的问题投票标记我之前,请注意,我在这个问题上找到的所有内容都与 virtualenv 有关,而不是 venv) 系统: Ubuntu 服务器 16.04 已安装 Python 3.6,原生
Visual Studio 2017 - 空 Python 项目我的代码如下所示(是的,只有两行): import pandas as pd import Quandl 我已将 Quandl (3.2
我需要 pickle 我已经实例化的 python 类,因此需要使用相对路径。我正在使用 Python 版本 3.6.6。以下是项目结构和代码的示例: modelling/ test.py
我是一名优秀的程序员,十分优秀!