为什么 setuptools 没有安装我在 MANIFEST.in 中命名的“数据文件”?

boa*_*der 5 python setuptools

尝试使用 MANIFEST.in 文件(包含一行):

recursive-include etc *
Run Code Online (Sandbox Code Playgroud)

为 systemd 安装一些文件(是的,我对那部分不屑一顾)

我看到文件被 sdist 添加到 tarball 中,但没有任何东西会导致它们安装。

setup.py 包含以下几行

  packages=find_packages(),
  include_package_data=True,
Run Code Online (Sandbox Code Playgroud)

然后,如果我将此添加到 setup.py 并删除 MANIFEST.in

  data_files=[
      ('etc/systemd/system/', ['etc/systemd/system/uwsgi.service'])
  ],
Run Code Online (Sandbox Code Playgroud)

他们按预期安装。我需要为 MANIFEST.in 添加一些东西而不是在 setup.py 中按名称枚举所有文件吗?

jwo*_*der 7

package_data并且data_files不是一回事。 package_data是与您的*.py文件存储和安装在同一目录中的文件(因此是“包”部分);include_package_data因此只将在包目录中找到的数据文件(强调添加)标记为包数据。除非您的代码存储etc/在您的包源下,否则您的任何文件都不会被视为包数据。为了你的 Python 包目录之外安装文件,你需要使用data_files,并且没有像include_package_data.