我应该在我的包中包含非 Python 文件吗?



我有一个包,其中的版本在文件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但不将其发送到我的包中?

版本信息通常包含在包中,因为对于一个软件来说,了解和传达自己的版本非常有用。查看如何最好地做到这一点的一个很好的来源是项目模板,例如官方千篇一律的列表。


为了给出我个人的最爱,我喜欢在我最顶层的__init__.py文件中放入一个变量__version__ = '0.1.2'

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

相关内容

  • 没有找到相关文章

最新更新