2010-06-03 61 views
6

我正在为Python项目编写setup.py文件,以便我可以分发它。其目的是最终创建一个.egg文件,但我试图首先使用distutils和常规的.zip来工作。为什么我不能使用distutils将这些数据文件包含在Python发行版中?

这是一个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为一个命令行参数),一个.zip文件会与所有的python文件一起生成,但不包括配置文件。我认为这个代码:

data_files = [('config', ['..\config\propsFile1.ini', 
            '..\config\propsFile2.ini', 
            '..\config\propsFile3.ini'])] 

表明,这3个指定配置文件应该被复制到zip分发了“config”目录。为什么这段代码不能完成任何事情?我究竟做错了什么?

(我也曾尝试与配置文件的路径玩耍......但似乎没有任何帮助。将Python中抛出一个错误或警告,如果路径是不正确的/没有被发现的文件?)

回答

1

我终于通过将整个config目录移动到src文件夹中来完成这项工作。这意味着我的路径已关闭......但由于我似乎无法找到备份目录的方式(“.. \”没有任何区别),我将坚持使用此解决方案目前。

6

创建MANIFEST.in文件是这样的:

include config\* 

编辑)在这里寻找更多信息:http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute

+0

谢谢。我得到以下错误:'警告:找不到匹配'config \ *''的文件。我已经尝试改变为.. \ config \ *,但是这也没有帮助...任何想法? – froadie 2010-06-03 16:02:02

+0

'\'和'*'之间有空格。尝试删除? 否则尝试使用正斜杠。我使用了正斜杠,但因为您似乎已经使用了反斜杠,所以我在这里用'\'替换了'/'。不过,我发现在Windows上使用/并不会真的引起任何问题。 如果实在不行,就检查你是否在正确的轨道上通过硬编码文件名进去,如: 包括配置/ propsFile1.ini 包括配置/ propsFile2.ini #等... – Umang 2010-06-03 16:55:55

+0

空间只有因为格式化 - 当我将它们放在一起时,由于某种原因隐藏了斜线。更改为正斜杠并没有什么区别... Python似乎会自动将其转换回来,同样的错误消息。在单个文件上得到同样的错误...... :(任何线索有什么问题吗?它是一个路径问题吗? – froadie 2010-06-03 17:07:06

0

我猜你有逃脱的反斜杠文件名;例如,而不是'..\config\whatever',请编写'..\\config\\whatever',或使用原始字符串语法:r'..\config\whatever'

+0

我试过了(这是我的意思之一,我也尝试过使用配置文件的路径),它似乎没有什么不同... – froadie 2010-06-03 16:00:37

+0

Distutils总是使用正斜杠。 – 2011-12-21 16:31:15

相关问题