Пакети Python та каталоги яєчної інформації


80

Хтось може пояснити, як каталоги яєчної інформації пов’язані з відповідними модулями? Наприклад, у мене є таке:

/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, чи міг би я просто символічно зв’язати каталог модулів та каталог яєчної інформації на сайт- пакунки каталог? Я б спробував це сам, але я не впевнений, як перевірити, чи є пакет видимим для setuptools. Бонусні бали, якщо ви також можете сказати мені, як це протестувати :)

Основна причина, через яку я намагаюся зрозуміти все це, полягає в тому, що я хотів би символічно зв’язати деякі мої модулі в пакети сайтів, щоб я міг вносити до них зміни і мати видимі зміни для сценаріїв, які їх використовують, без необхідності переінсталювати яйце з PyPI після кожної зміни.


У вас все ще є плагін quodlibet для python, який десь висить? Це звучить по-справжньому круто.
Пітер Тернер

@PeterTurner Це, мабуть, сам quodlibet - це написано на Python
Флоріан Брукер

Відповіді:


71

Каталоги .egg-info створюються лише в тому випадку, якщо для встановлення яйця було використано - single-version-externally-managed. "Зазвичай", встановлення яйця створить єдиний каталог (або zip-файл), що містить як код, так і метадані.

pkg_resources (це бібліотека, яка читає метадані) має функцію, requireяка може бути використана для запиту певної версії пакету. Для регулярного імпортування за "старим стилем" easy_install зламує файл .pth, щоб перевести каталог яєць на sys.path. Для --single-version-externally-managed цей злом не є необхідним, оскільки буде встановлена ​​лише одна версія (за допомогою інфраструктури пакетування системи, наприклад, rpm або dpkg). Інформація про яйце все ще включена для програм, які використовують require(або будь-який інший механізм прив'язки pkg_resources).

Якщо ви хочете встановити пакет за допомогою жорстких посилань, я рекомендую скористатися програмою "setup.py розробляти". Це команда від setuptools, яка насправді не встановлює яйце, але робить його доступним на всьому сайті. Для цього він створює файл з посиланням на яйце, щоб pkg_resources міг його знайти, і він маніпулює файлом .pth, щоб регулярний імпорт міг його знайти.


26
Щоб змінити наслідки setup.py develop, використовуйтеsetup.py develop -u
codewarrior

Зверніть увагу, що це мала літера -u. Великі літери -Uроблять щось інше.
CGFoX
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.