我应该在我的包中包含非 Python 文件吗?
Should I include non-Python files in my package?
我有一个包,其版本在文件 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
但不将其发送到我的包裹中?
版本信息通常包含在一个包中,因为它对于软件了解和传达自己的版本非常有用。检查如何最好地做到这一点的一个很好的来源是项目模板,例如 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
我有一个包,其版本在文件 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
但不将其发送到我的包裹中?
版本信息通常包含在一个包中,因为它对于软件了解和传达自己的版本非常有用。检查如何最好地做到这一点的一个很好的来源是项目模板,例如 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