6

我正在为 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

4 回答 4

6

创建一个MANIFEST.in像这样的文件:

include config\*

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

于 2010-06-03T14:56:09.663 回答
2

在 MANIFEST.in 中试试这个:

recursive-include config *

它对我有用

于 2021-06-29T06:38:23.427 回答
1

我终于通过将整个配置目录移动到 src 文件夹中来实现这一点。这一定意味着我的路径已经关闭......但由于我似乎找不到备份目录的方法(“..\”没有任何区别),我将坚持使用这个解决方案目前。

于 2010-06-03T18:10:46.097 回答
0

我猜你必须转义文件名中的反斜杠;例如,代替'..\config\whatever', write'..\\config\\whatever'或使用原始字符串语法:r'..\config\whatever'.

于 2010-06-03T15:58:05.933 回答