Почему я не могу включить эти файлы данных в дистрибутив Python, используя distutils? - PullRequest
6 голосов
/ 03 июня 2010

Я пишу файл setup.py для проекта Python, чтобы его можно было распространять. Цель состоит в том, чтобы в конечном итоге создать файл .egg, но я пытаюсь заставить его работать сначала с distutils и обычным .zip.

Это проект pydev Eclipse, и моя файловая структура выглядит примерно так:

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 указанных файла конфигурации должны быть скопированы в каталог "config" в дистрибутиве zip. Почему этот код ничего не делает? Что я делаю не так?

(Я также пытался поиграться с путями файлов конфигурации ... Но, похоже, ничего не помогло. Будет ли Python выдавать ошибку или предупреждение, если путь был неправильным / файл не найден?)

Ответы [ 3 ]

6 голосов
/ 03 июня 2010

Создайте MANIFEST.in файл, подобный этому:

include config\*

( РЕДАКТИРОВАТЬ ) Для получения дополнительной информации см. Здесь: http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute

1 голос
/ 03 июня 2010

Я наконец заставил это работать, переместив весь каталог config в папку src. Это должно означать, что мои пути отключены ... но так как я не могу найти способ сделать резервную копию каталога (".. \" не имеет значения), я собираюсь придерживаться этого решения на данный момент.

0 голосов
/ 03 июня 2010

Полагаю, вы должны избегать обратной косой черты в именах файлов;например, вместо '..\config\whatever' напишите '..\\config\\whatever' или используйте синтаксис необработанной строки: r'..\config\whatever'.

...