MANIFEST.in、package_data和data_files的澄清?
我正在尝试创建一个Python包,目录结构如下:
mypkg/
├── __init__.py
├── module1
│ ├── x.py
│ ├── y.py
│ └── z.txt
└── module2
├── a.py
└── b.py
然后我在 MANIFEST.in
文件中添加了所有的文件,当我检查创建的压缩包时,发现里面有所有的文件。
但是当我在 dist-packages/mypkg/module1
目录下运行 python setup.py install
时,我只看到了Python文件,而没有看到 z.txt
。
我在 MANIFEST.in
和 setup.py
中都添加了 z.txt
:
setup (
packages = [
'mypkg',
'mypkg.module1',
'mypkg.module2',
],
package_data = {
'mypkg': ['module1/z.txt']
},
include_package_data = True,
...
)
我也尝试把这个文件作为 data_files
添加,但这样会在 /usr/local
创建一个目录。我想把它保留在源代码目录里,因为代码需要用到这个数据。
我看过下面列出的帖子,但我还是搞不清楚在运行 setup.py install
后,怎么才能把 z.txt
放在正确的位置。
2 个回答
14
试试用setuptools,别用distutils。
2
更新:当我开始使用setuptools而不是distutils.core时,问题解决了。我觉得是distutils和manifest之间有些不兼容,而setuptools在代码没有任何变化的情况下就能正常工作。我建议以后使用setuptools。可以通过这个链接了解更多信息:setup tools- 开发者指南