Подтвердить что ты не робот

Python: Почему некоторые пакеты устанавливаются как яйца, а некоторые - как папки с яйцами?

Я поддерживаю несколько пакетов Python. У меня есть очень похожий файл setup.py для каждого из них. Однако при выполнении setup.py install один из моих пакетов устанавливается как яйцо, а остальные устанавливаются как "папки с яйцами", то есть папки с расширением "яйцо".

В чем разница между ними, которая вызывает это различное поведение?

4b9b3361

Ответ 1

Внутренняя структура яблок Python, метаданные поддержки ZIP:

Если zip-safe существует, это означает, что проект будет работать правильно при установке в качестве zip файла .egg, и, наоборот, существование not-zip-safe означает, что проект не должен быть установлен как файл .egg [т.е. как каталог .egg]. Параметр zip_safe для setuptools 'setup() определяет, какой файл будет записан. Если опция не указана, setuptools пытается самостоятельно оценить, может ли пакет работать, на основе анализа кода и контента.

Ответ 2

Один файл яйца на самом деле представляет собой zip-архив с определенной структурой каталогов внутри. В документации zipimport файлы .py, .pyc и .pyo можно импортировать из zip файлов. Итак, если пакет должен импортировать другие типы ресурсов модуля (например, скомпилированный код c, .so файлы, файлы .pyd), он не будет работать как zip файл.

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