为什么安装工具没有安装 MANIFEST.in 中命名的"data files"?



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

recursive-include etc *

为 systemd 安装一些文件(是的,我对那部分嗤之以鼻)

我看到文件被 sdist 添加到压缩包中,但没有什么会导致它们安装。

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仅将其在包目录中找到的数据文件(强调添加)标记为包数据。 除非代码存储在包源中的 etc/ 下,否则任何文件都不会被视为包数据。 为了在Python包目录之外安装文件,您需要使用data_files,并且没有像include_package_data那样的快捷方式。

最新更新