setuptools sdist忽略data_files

时间:2016-06-30 07:56:47

标签: setuptools

根据文档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根本没有包含文件等。

编辑:

似乎这就是答案:https://github.com/pypa/setuptools/issues/521

1 个答案:

答案 0 :(得分:0)

自己回答。

根据pypanon-package-data-files。" Setuptools不支持将数据文件安装到用户计算机上的任意位置;这是一个功能,而不是一个bug。"

如果需要将文件安装到/ etc,/ usr / share等位置,例如,他/她可能会使用来自distutils的data_files标志,这些功能并未完全从setuptools中清除。 "没有彻底清理"意味着您需要手动将这些文件添加到MANIFEST.in,这与distutils中的不同。

当然,如果可以使用rpm或deb软件包系统管理这些配置文件会更好。对我而言,这只是暂时使用pip的解决方案。