为什么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_datadata_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

+0

我查过了,事实确实如此。谢谢 – boatcoder