我有一个软件包,其版本在文件VERSION.txt
中,在setup.py
中,我具有以下内容:
with open('VERSION.txt', 'r') as v:
version = v.read().strip()
setuptools.setup(
...
version=version,
...
)
如果我安装并尝试运行它,则会得到FileNotFoundError: [Errno 2] No such file or directory: 'VERSION.txt'
,显然是因为我没有在软件包中包含VERSION.txt
,但我认为我不应该这样做。
该代码的工作方式将需要添加include_package_data=True
并创建一个MANIFEST.in
。
在开发环境中,还有其他方法可以使用此VERSION.txt
而不将其发送到我的包中吗?
答案 0 :(得分:1)
版本信息通常包含在软件包中,因为它对于一件软件了解和传达自己的版本非常有用。最好的方法是查看项目模板,例如the list of official cookiecutters。
要给出我个人的最爱,我喜欢将变量__version__ = '0.1.2'
放入最上面的__init__.py
文件中:
mypackage
├───src
│ └───mypackage
│ └───__init__.py # only content here is the version string
└───setup.py
然后我可以导入setup.py
...
from src.mypackage import __version__
setuptools.setup(
...
version=__version__,
package_dir={'': 'src'},
packages=find_packages(where='src'),
...
)
...,并且在安装我的软件包时也可以轻松访问
>>> from mypackage import __version__
>>> print(__version__)
0.1.2