Я пишу setup.py файл для проекта Python так, чтобы я мог распределить его. Цель состоит в том, чтобы в конечном счете создать .egg файл, но я пытаюсь заставить ее работать сначала с distutils и регулярным .zip.
Это - затмение 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. Почему этот код ничего не выполняет? Что я делаю неправильно?
(Я также попытался играть вокруг с путями файлов конфигурации... Но ничто, кажется, не помогает. Python бросил бы ошибку или предупреждение, если бы путь был неправильный / файл не был найден?)
Я наконец-то заставил это работать, переместив весь каталог config в папку src. Это должно означать, что у меня неправильные пути... но так как я не смог найти способ резервного копирования каталога ("...\" не имеет значения), я собираюсь пока придерживаться этого решения.
Создайте файл MANIFEST.in
следующим образом:
include config\*
(EDIT) Дополнительную информацию смотрите здесь: http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute
Я думаю, что вы должны избежать обратных косых черт в именах файлов; например, вместо '.. \config\whatever'
, напишите '.. \\config\\whatever'
или используйте синтаксис необработанной строки: r'.. \config\whatever'
.