为什么setuptools不安装我在MANIFEST.in中命名的“数据文件”?
问题描述:
试图用一个MANIFEST.in文件(包含一行):为什么setuptools不安装我在MANIFEST.in中命名的“数据文件”?
recursive-include etc *
安装一些文件systemd(是的,我抱着我的有关部分鼻)
我看到文件被sdist添加到tarball中,但没有任何东西会导致它们安装。
setup.py包含以下行
packages=find_packages(),
include_package_data=True,
然后,如果我添加这setup.py文件并删除MANIFEST.in
data_files=[
('etc/systemd/system/', ['etc/systemd/system/uwsgi.service'])
],
他们安装符合市场预期。有没有什么缺失,我需要添加MANIFEST.in工作,而不是通过setup.py名称列举所有文件?
答
package_data
和data_files
不是一回事。 package_data
是安装在与*.py
文件(因此“包”部分)相同的目录中的&文件。因此include_package_data
仅标记为data files it finds inside your package directories(强调添加)作为包数据。除非您的代码被存储在您的软件包源中的etc/
下,否则您的任何文件都不会被视为包数据。为了安装以外的文件您的Python软件包目录you need to use data_files
,并且没有快捷方式,因为它有include_package_data
。
我查过了,事实确实如此。谢谢 – boatcoder