为什么我不能使用distutils将这些数据文件包含在Python发行版中?

时间:2010-06-03 13:39:43

标签: python distribution distutils setup.py

我正在为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 个答案:

答案 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 *

它对我有用

相关问题