2010-06-03 1 views
6

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

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

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

ответ

1

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

6

Создать MANIFEST.in файл, как это:

include config\* 

(EDIT) Посмотрите здесь для получения дополнительной информации: http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute

+0

Спасибо. Я получаю следующую ошибку: 'предупреждение: никакие файлы не найдены, соответствующие 'config \ *''. Я пытался изменить на .. \ config \ *, но это не помогает ни ... идеи? – froadie

+0

Между «\» и «*» есть пробел. Попробуйте удалить это? Иначе попробуйте использовать косую черту. Я использовал косую черту, но поскольку вы, похоже, использовали обратную косую черту, я заменил '/' на '\' здесь. Тем не менее, я обнаружил, что использование/НЕ действительно вызывает проблемы в Windows. Если ничего не работает, просто проверить, являетесь ли вы на правильном пути по жестко прописывать имена файлов в него, как: включают конфиг/propsFile1.ini включают конфиг/propsFile2.ini # и т.д ... – Umang

+0

Пространства было только из-за форматирования SO - когда я их складывал, он почему-то скрывал косую черту. Изменение наклонной косой черты не имеет значения ... Python, похоже, автоматически преобразует его обратно, то же сообщение об ошибке. Получите ту же ошибку в отдельных файлах ... :(какой-нибудь вопрос, что не так? Это проблема пути? – froadie

0

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

+0

Я пробовал это (это одна из вещей, которую я подразумевал под «Я тоже пытался поиграть с путями конфигурационных файлов»), и это, похоже, не изменило ... – froadie

+0

Distutils всегда использует косые черты. –