为什么setuptools没有安装我的"数据文件"以MANIFEST.in命名?

时间:2017-10-18 19:19:03

标签: python 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中按名称枚举所有文件?

1 个答案:

答案 0 :(得分:4)

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一样的捷径。