Установите Python egg в среде сборки, включая файлы данных - PullRequest
4 голосов
/ 18 февраля 2010

В этом вопросе предполагается, что пакет python, который я хочу установить, является приложением django, которое включает шаблоны и мультимедийные файлы.Но этот вопрос действителен для любого пакета python, который содержит не только .py файлы.

Я использую buildout для создания перестраиваемой среды, в которой я разрабатываю проект django.Мой buildout.cfg выглядит так:

[buildout]
parts = python
eggs =
  normal-python-package
  python-package-with-data-files
find-files = 
  http://domain-to-python-package-with-data-files

[python]
recipe = zc.recipe.egg
interpreter = python
eggs = ${buildout:eggs}

(и некоторые вещи, связанные с django).python-package-with-data-files доступен по ссылке на странице http://domain-to-python-package-with-data-files.

Яйца normal-python-package и python-package-with-data-files успешно установлены в каталоге eggs/.Поскольку python-package-with-data-files установил zip_safe в * 109 * в своем файле setup.py, он доступен в распакованном виде в eggs/.

Только не .py файлы python-package-with-data-files недоступны вразархивированное яйцо в eggs/ (они включены в пакет .tar.gz, доступный в http://domain-to-python-package-with-data-files).

Как получить эти файлы данных для включения в яйцо?Нужно ли менять файл setup.py пакета?Или это связано со сборкой?

Я обнаружил следующее:

Если я сделаю корневой каталог python setup.py sdist в python-package-with-data-files, все файлы данных будут включены в созданный файл.файл tar.gz.Но если я сделаю python setup.py bdist, это приведет к сборке без включения файлов данных.

Это заставляет меня думать, что проблема не связана с конкретной сборкой.Но, возможно, есть способ сказать buildout не создавать bdist, а sdist для создания яйца и установки пакета в проект.

Что мне делать?Я поддерживаю python-package-with-data-files, поэтому я могу изменить setup.py при необходимости.

1 Ответ

3 голосов
/ 18 февраля 2010

Похоже, вам нужно использовать аргумент ключевого слова package_data в файле setup.py, поэтому distutils знает, что эти файлы должны быть установлены вместе с вашим пакетом.

...