根据文档https://packaging.python.org/en/latest/distributing/#data-files
setuptools将尊重setup.py中的data_files
。但我无法使其发挥作用。这是我的setup.py:
setup(
name='booking_order',
version=version,
packages=find_packages(),
package_data={
'booking_order': ['fake_backends/static/*',
'scripts/*',
'*.sample'],
},
data_files=[
('/etc/booking', ['etc/booking.conf'])
],
这是项目的文件树:
.
├── booking_order
│ ├── __init__.py
│ ├── tests
│ │ ├── __init__.py
├── etc
│ ├── booking.conf
├── README.md
├── setup.py
行为是,如果我运行python setup.py install
,文件etc/booking.conf
将安装到/etc/booking
。但是,如果我先python setup.py sdist upload
,然后pip install booking_order
,则会出现错误"错误:无法复制' etc / booking.conf':不会' ; t是否存在常规文件"。
我检查python setup.py sdist
根本没有包含文件等。
编辑:
答案 0 :(得分:0)
自己回答。
根据pypa和non-package-data-files。" Setuptools不支持将数据文件安装到用户计算机上的任意位置;这是一个功能,而不是一个bug。"
如果需要将文件安装到/ etc,/ usr / share等位置,例如,他/她可能会使用来自distutils的data_files标志,这些功能并未完全从setuptools中清除。 "没有彻底清理"意味着您需要手动将这些文件添加到MANIFEST.in,这与distutils中的不同。
当然,如果可以使用rpm或deb软件包系统管理这些配置文件会更好。对我而言,这只是暂时使用pip的解决方案。