使用 distutils
, setuptools
等,包版本在 setup.py
中指定:
# file: setup.py
...
setup(
name='foobar',
version='1.0.0',
# other attributes
)
我希望能够从包内访问相同的版本号:
>>> import foobar
>>> foobar.__version__
'1.0.0'
我可以将 __version__ = '1.0.0'
添加到我的包的 init.py 中,但我还想在我的包中包含其他导入以创建包的简化接口:
# file: __init__.py
from foobar import foo
from foobar.bar import Bar
__version__ = '1.0.0'
和
# file: setup.py
from foobar import __version__
...
setup(
name='foobar',
version=__version__,
# other attributes
)
但是,这些额外的导入可能会导致安装 foobar
如果它们导入其他尚未安装的包,则会失败。与 setup.py 和包共享包版本的正确方法是什么?
原文由 Jace Browning 发布,翻译遵循 CC BY-SA 4.0 许可协议
仅在
setup.py
中设置版本,并使用pkg_resources
读取您自己的版本,有效查询setuptools
元数据:文件:
setup.py
文件:
__init__.py
为了使它在所有情况下都能正常工作,你可以在没有安装它的情况下运行它,测试
DistributionNotFound
和分发位置: