Вопрос

Кто-нибудь может объяснить, как каталоги egg-info привязаны к соответствующим модулям?Например, у меня есть следующее:

/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/

Я предполагаю, что каталог egg-info предназначен для того, чтобы сделать соответствующий модуль видимым для setuptools (easy_install), верно?Если да, то как setuptools привязывает каталог egg-info к каталогу модуля?

Предполагая, что я на правильном пути, и просто для примера...Если бы я хотел сделать свой существующий пакет видимым для setuptools, мог бы я просто символически связать каталог модуля и каталог egg-info с каталогом site-packages?Я бы просто попробовал это сам, но я не уверен, как проверить, виден ли пакет setuptools.Бонусные баллы, если вы также можете рассказать мне, как это проверить :)

Основная причина, по которой я пытаюсь понять все это, заключается в том, что я хотел бы создать символические ссылки на некоторые из моих модулей в пакетах сайтов, чтобы я мог вносить в них изменения и видеть изменения в сценариях, которые их используют, без необходимости переустанавливать egg из PyPI после каждого изменения.

Это было полезно?

Решение

Каталоги .egg-info создаются только в том случае, если для установки egg использовалась --single-version-external-managed."Обычно" при установке egg создается единый каталог (или zip-файл), содержащий как код, так и метаданные.

pkg_resources (это библиотека, которая считывает метаданные) имеет функцию require который может быть использован для запроса определенной версии пакета.Для обычного импорта в "старом стиле" easy_install взламывает файл .pth, чтобы получить каталог egg в sys.path.Для --single-version-управляемой извне, этот взлом не является необходимым, поскольку будет установлена только одна версия (с помощью инфраструктуры пакакинга системы, напримероб/мин или dpkg).Информация о яйце по-прежнему включена для приложений, которые используют require (или любой из других механизмов привязки pkg_resources).

Если вы хотите установить пакет с помощью жесткой ссылки, я рекомендую использовать "setup.py разработать".Это команда из setuptools, которая на самом деле не устанавливает egg, но делает его доступным по всему сайту.Для этого он создает файл egg-link, чтобы pkg_resources мог его найти, и манипулирует файлом .pth, чтобы обычный импорт мог его найти.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top