任务很简单:我有一个扩展名不是py
的文件,需要随包一起分发。出于此示例的目的,我们将其称为.config.json
。
我尝试将其放入MANIFEST.in
作为include .config.json
- 这没有效果。
我尝试了package_data={'': ['.config.json']}
- 这也没有效果。
我也尝试了data_files=[('', '.config.json')]
- 这打破了无关的错误:error: can't copy '.': doesn't exist or not a regular file
如果不是自己编写构建命令,我找不到任何可以使其工作的东西。并且,是的,我已经在SO上看到了大量类似的问题,在bug跟踪器中的GitHub等等。我知道setuptools
和distutils
基本上都是无可救药地被打破了,但也许有一些使这项工作合理的方法?我无法相信这个简单的东西还没有解决......
根据要求,setup.py
:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
setup(
name='project_name',
version='0.1.0',
description='Project Name in Caps',
author='My Company',
author_email=','.join(
'{}@domain.com'.format(name) for name in
list_of_names
),
url='https://somewhere',
packages=find_packages(),
# package_data={
# '': ['.config.json'],
# },
# data_files=[('', '.config.json')],
install_requires=[
'pytest >= 3.4.2',
...
],
)
答案 0 :(得分:1)
在`setup.py:
中package_data={'package': ['../.config.json']}
这种方法的问题在于鸡蛋会将.config.json
安装到site-packages/
中,这几乎不是您想要的,当然不是用户对包装的期望。
PS。 MANIFEST.in
没有帮助,因为它仅适用于源代码分发(python setup.py sdist
)。
答案 1 :(得分:0)
data_files
是您想要的,但您需要确保文件名包含在列表中:
data_files=[('', ['.config.json'])],
当我运行setup.py
时,这对我有用。