为什么 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_data
和 data_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
.
的捷径
尝试使用 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_data
和 data_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
.