为什么我无法使用distutils将这些数据文件包含在Python分发中?
我正在为一个Python项目写一个setup.py文件,这样我就可以把它分发出去。我的目标是最终创建一个.egg文件,但我现在先想让它能用distutils和普通的.zip文件工作。
这是一个Eclipse的PyDev项目,我的文件结构大概是这样的:
ProjectName
src
somePackage
module1.py
module2.py
...
config
propsFile1.ini
propsFile2.ini
propsFile3.ini
setup.py
这是我目前的setup.py代码:
from distutils.core import setup
setup(name='ProjectName',
version='1.0',
packages=['somePackage'],
data_files = [('config', ['..\config\propsFile1.ini',
'..\config\propsFile2.ini',
'..\config\propsFile3.ini'])]
)
当我运行这个(用sdist作为命令行参数)时,会生成一个包含所有Python文件的.zip文件,但配置文件却没有包含在内。我以为这段代码:
data_files = [('config', ['..\config\propsFile1.ini',
'..\config\propsFile2.ini',
'..\config\propsFile3.ini'])]
是指这3个指定的配置文件应该被复制到.zip分发包中的一个“config”目录里。为什么这段代码没有起作用呢?我哪里做错了?
(我也尝试过调整配置文件的路径……但似乎没有什么效果。如果路径不正确或文件找不到,Python会报错或警告吗?)
4 个回答
3
在MANIFEST.in文件中试试这个:
recursive-include config *
这个对我有效
6
创建一个 MANIFEST.in
文件,内容如下:
include config\*
(编辑) 想了解更多信息,可以查看这里: http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute
1
我终于让这个工作起来了,方法是把整个配置文件夹移动到了src文件夹里。这说明我的路径设置可能有问题……不过我找不到办法去上一级目录(用“..”没有效果),所以我暂时就先用这个方法吧。