为什么我无法使用distutils将这些数据文件包含在Python分发中?

6 投票
4 回答
2565 浏览
提问于 2025-04-15 23:30

我正在为一个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文件夹里。这说明我的路径设置可能有问题……不过我找不到办法去上一级目录(用“..”没有效果),所以我暂时就先用这个方法吧。

撰写回答