版本 = 属性:在 setup.cfg 中,ModuleNotFoundError
version = attr: in setup.cfg, ModuleNotFoundError
在我的 Python 目录布局项目中
.
├── justfile
├── pyproject.toml
├── README.md
├── setup.cfg
└── src
└── foobar
├── __about__.py
├── __init__.py
└── main.py
__about__.py
阅读
__version__ = "1.0.0"
我想在 setup.cfg
中使用此版本信息。我试过了
[metadata]
name = foobar
version = attr: foobar.__about__.__version__
[options]
package_dir =
=src
packages = find:
install_requires =
rich
python_requires = >=3.6
[options.packages.find]
where=src
但这仍然会尝试导入 foobar,导致在尝试评估版本字符串时来自 foobars 依赖项的 ModuleNotFoundError
s。
__init__.py
读取
from .main import solve
from .__about__ import __version__
我的印象是在 this PR has been merged, just the AST of the attr
was evaluated. (See also 之后。)
知道哪里出了问题吗?
src
不是包导入路径的一部分(您不会对已安装的包执行 import src.foobar
),它只是一个目录。
尝试
version = attr:foobar.__about__.__version__
相反(假设您 set up the src/
layout in setup.cfg)。
我发现了问题。在 __init__.py
中,__version__
必须在 所有外部依赖项之前被导入 。这个
from .__about__ import __version__
from .main import solve
有效。
在我的 Python 目录布局项目中
.
├── justfile
├── pyproject.toml
├── README.md
├── setup.cfg
└── src
└── foobar
├── __about__.py
├── __init__.py
└── main.py
__about__.py
阅读
__version__ = "1.0.0"
我想在 setup.cfg
中使用此版本信息。我试过了
[metadata]
name = foobar
version = attr: foobar.__about__.__version__
[options]
package_dir =
=src
packages = find:
install_requires =
rich
python_requires = >=3.6
[options.packages.find]
where=src
但这仍然会尝试导入 foobar,导致在尝试评估版本字符串时来自 foobars 依赖项的 ModuleNotFoundError
s。
__init__.py
读取
from .main import solve
from .__about__ import __version__
我的印象是在 this PR has been merged, just the AST of the attr
was evaluated. (See also
知道哪里出了问题吗?
src
不是包导入路径的一部分(您不会对已安装的包执行 import src.foobar
),它只是一个目录。
尝试
version = attr:foobar.__about__.__version__
相反(假设您 set up the src/
layout in setup.cfg)。
我发现了问题。在 __init__.py
中,__version__
必须在 所有外部依赖项之前被导入 。这个
from .__about__ import __version__
from .main import solve
有效。