Почему easy_install извлекает некоторые яйца python, а не другие?

В моем каталоге /usr/local/lib/python.../dist-package у меня есть каталоги .egg и .egg.

Почему установщик выбирает дополнительные пакеты в каталог .egg, но оставляют другие файлы с расширениями .egg?

Ответы

Ответ 1

Если пакет содержит только код pure-Python, он может оставаться только файлом яйца. Интерпретатор Python может загружать модули Python непосредственно из яйца. Если пакет содержит модули, написанные на C или других данных, необходимо извлечь яйцо, чтобы можно было получить доступ к C-модулям и/или данным. Полагаю, что поведение пакетов по умолчанию. Новые версии Python могут загружать C-модули из файлов-яиц; Я не уверен в этой части.

Создатель пакета также может специально проинструктировать установщика об распаковке пакета, передав zip_safe = False to setup() в свои setup.py.

Наконец, человек, выполняющий установку, может явно сказать easy_install, чтобы распаковать яйца, передав ему опцию -Z или установив zip_ok = false в файле pydistutils.cfg.

Ответ 2

Я не могу объяснить, почему некоторые яйца заархивированы (файлы), а некоторые - это каталоги, но я могу предложить это: если вы ненавидите замятые яйца (как и я), поместите это в раздел [easy_install] вашего ~/.pydistutils.cfg:

zip_ok = false