Я пишу приложение Django, которое использует pip & virtualenv для управления своей средой разработки.
Одна из зависимостей, pkgme , поставляется со многими файлами данных, которые являются ее "backends "и настраиваются в его файле setup.py с помощью data_files=$FOO
(а не package_data
).
Когда pkgme ищет свои backends, он ищет в os.path.join(sys.prefix, "share", "pkgme", "backends")
.Это прекрасно работает, когда pkgme установлен нормально, и, кажется, соответствует документации , но не работает, когда pkgme установлен как яйцо.
Там данныефайлы устанавливаются в $VIRTUAL_ENV/lib/python2.7/site-packages/pkgme-0.1-py2.7.egg/share
, а не в ожидаемый $VIRTUAL_ENV/share
.
, что оставляет мне два вопроса:
- Должен ли я использовать что-то отличное от
os.path.join
выше длянайти файлы данных независимо от того, используем ли мы установку на яйца или традиционную установку системы?Если да, то что? - Должен ли я распространять свои файлы данных по-другому, чтобы сделать их более доступными в яйце?
Обратите внимание, что я знаю о pkgutil.get_data
, нопредпочел бы не использовать его.Меня не интересует содержимое этих файлов данных, я хочу знать вместо них местоположение , чтобы я мог их выполнить.
Мой текущий план состоит в том, чтобысделать это:
- Использовать
package_data
вместо data_files
- Измените pkgme, чтобы искать бэкэнды относительно
pkgme.__file__
вместо sys.prefix