Почему easy_install извлекает некоторые яйца питона, а не другие? - PullRequest
18 голосов
/ 09 апреля 2010

Глядя в мой каталог /usr/local/lib/python.../dist-package, у меня есть каталоги .egg и файлы .egg.

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

Ответы [ 2 ]

29 голосов
/ 09 апреля 2010

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

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

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

4 голосов
/ 09 апреля 2010

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

zip_ok = false
...