TL;DR: 中的按键package_data
字典是packages;这些值是 glob 列表。''
不是任何 Python 包的有效名称。
如果你想拥有bar.txt
安装在旁边__init__.py
包装数量foo
, use
package_data={'foo': ['bar.txt']}
我有布局:
foo/
__init__.py
bar.txt
setup.py
Now, if foo
是像上面这样的包,执行以下操作:
import setuptools
setuptools.setup(
name='foo',
version='2015.3',
license='commercial',
packages=setuptools.find_packages(),
package_data={'foo': ['bar.txt']},
)
之后python setup.py sdist
,我检查内容dist/foo-2015.3.tar.gz
% tar tfz dist/foo-2015.3.tar.gz
...
foo-2015.3/foo/bar.txt
...
但是,如果我运行你的setup.py
with package_data={'': ['foo/bar.txt']}
,我可以同意foo/bar.txt
will not添加到源发行版中,除非如果foo-2015.3.egg-info/SOURCES.txt
已经有线路foo/bar.txt
- 在这种情况下,该文件也会在源代码分发中弹出
没有使用清单; setuptools 版本是3.6
(我故意安装了与您使用的相同的旧版本):
>>> import setuptools
>>> setuptools.__version__
'3.6'
上述行为也适用于标准distutils
: 2.6 安装包数据 https://docs.python.org/3/distutils/setupscript.html#installing-package-data“遗留”distutils 文档; 2.7、3.1 的评论:
版本已更改[2.7,3.1]:所有匹配的文件package_data
将被添加到MANIFEST
file 如果没有提供模板.