我正在为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会抛出错误或警告吗?)
答案 0 :(得分:6)
创建一个MANIFEST.in
文件,如下所示:
include config\*
(编辑)点击此处了解详情:http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute
答案 1 :(得分:1)
我终于将整个配置目录移动到src文件夹中了。这必然意味着我的路径已经关闭......但由于我似乎无法找到备份目录的方法(“.. \”并没有什么区别),我将坚持使用这个解决方案现在。
答案 2 :(得分:0)
我猜你必须逃避文件名中的反斜杠;例如,代替'..\config\whatever'
,编写'..\\config\\whatever'
,或使用原始字符串语法:r'..\config\whatever'
。
答案 3 :(得分:0)
在 MANIFEST.in 中试试这个:
recursive-include config *
它对我有用