为什么 setuptools 没有安装我在 MANIFEST.in 中命名的 "data files"?

Why is setuptools not installing my "data files" named in MANIFEST.in?

尝试使用 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 文件相同的目录中的文件(因此是 "package" 部分); include_package_data 因此只标记 data files it finds inside your package directories (emphasis added) as package data. Unless your code is stored under etc/ in your package source, none of your files will be treated as package data. In order to install files outside your Python package directory, you need to use data_files,并且没有 include_package_data.

的捷径