Python 将文件包括在顶级目录中的setuptools

Python 将文件包括在顶级目录中的setuptools,python,python-3.x,setuptools,Python,Python 3.x,Setuptools,任务很简单:我有一个扩展名不是py的文件,它需要与包一起分发。在本例中,我们将其命名为.config.json 我试着把它放在MANIFEST.in中作为include.config.json——这没有效果 我尝试了package_data={'':['.config.json']}-这也没有效果 我还尝试了data_files=[(''''.'.config.json')]-这会导致不相关的错误:错误:无法复制'.':不存在或不是常规文件 除了自己编写一个构建命令之外,我找不到任何可以让它工作

任务很简单:我有一个扩展名不是
py
的文件,它需要与包一起分发。在本例中,我们将其命名为
.config.json

我试着把它放在
MANIFEST.in
中作为
include.config.json
——这没有效果

我尝试了
package_data={'':['.config.json']}
-这也没有效果

我还尝试了
data_files=[(''''.'.config.json')]
-这会导致不相关的错误:
错误:无法复制'.':不存在或不是常规文件

除了自己编写一个构建命令之外,我找不到任何可以让它工作的方法。而且,是的,我在GitHub上的bug trackers中看到了大量类似的问题。我知道
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',
        ...
    ],
)
在`setup.py中:

package_data={'package': ['../.config.json']}
这种方法的问题在于,egg会将
.config.json
安装到
站点软件包中/
,这几乎不是您想要的,也肯定不是用户对软件包的期望


PS.
MANIFEST.in
没有帮助,因为它仅用于源代码分发(
python setup.py sdist
)。

数据文件是您想要的,但您需要确保文件名包含在列表中:

data_files=[('', ['.config.json'])],

当我运行您的
setup.py

时,这对我来说很有用,“顶级目录”是什么意思?您想将文件安装到
站点软件包/
还是
站点软件包/mypackage/
?@phd
站点软件包/软件包版本。egg
您可以发布您的
setup.py
?@WillKeeling,并用setup.py更新。“您需要将文件
config.json
放到
包/
”-不,我没有。如果我这样做,它会出现在错误的位置(而不是
site-package/package-version.egg/.config.json
,它会被发送到
site-package/package-version.egg/package/.config.json
)好的,这确实做到了。非常感谢。但是,您所说的“egg将安装”是什么意思?
egg
不是一个程序,而是一种格式。当我运行
setup.py install
时,结果与您描述的不同。那么,这是怎么回事?我想我现在可以回答我自己的问题:
whl
egg
格式不兼容,因为它们如何处理源位置。因此,如果我运行
setup.py install
,它会正确安装,但是如果我运行
setup.py bdist\u wheel&&pip install./bdist/*.whl
,我会得到不同的结果。我知道Python打包是垃圾,但这真的很低。。。