代码之家  ›  专栏  ›  技术社区  ›  froadie

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

  •  6
  • froadie  · 技术社区  · 16 年前

    我正在为一个Python项目编写setup.py文件,以便分发它。目标是最终创建一个.egg文件,但我正在尝试让它首先与distutils和常规的.zip一起工作。

    这是一个eclipse pydev项目,我的文件结构如下:

    ProjectName
       src
          somePackage
             module1.py
             module2.py
             ...
       config
          propsFile1.ini
          propsFile2.ini
          propsFile3.ini
       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会抛出错误或警告吗?)

    3 回复  |  直到 16 年前
        1
  •  6
  •   Umang    16 年前

    创建 MANIFEST.in 文件如下:

    include config\*
    

    ( 编辑 )有关更多信息,请查看此处: http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute

        2
  •  1
  •   froadie    16 年前

    我最终通过将整个config目录移到src文件夹中来实现这一点。这一定意味着我走错了路。。。但是,由于我似乎找不到备份目录的方法(“…\”没有什么区别),所以现在我将继续使用这个解决方案。

        3
  •  0
  •   Tamás    16 年前

    我想你必须避开文件名中的反斜杠;e、 g.而不是 '..\config\whatever' ,写入 '..\\config\\whatever' ,或使用原始字符串语法: r'..\config\whatever'

    推荐文章