Могу ли я создать одно яйцо для нескольких версий python?

У нас есть локальная система, которая проходит через ряд яиц. На данный момент это означает, что каждый должен иметь установленную копию Python 2.5. Можно ли создать яйцо, которое может использоваться Python 2.5, 2.6 и 2.7 (в идеале и любые более поздние версии)?

Очевидно, что код python должен запускаться под всеми тремя версиями. В равной степени очевидно, что это яйцо не может содержать каких-либо C-расширений. Чуть менее очевидно, что яйцо должно содержать файлы python source (.py), а не файлы .pyc.

Кроме того, я знаю, что мы могли бы создать три яйца (или, возможно, скопировать одно яйцо с тремя именами), но это кажется неправильным.

Ответ 1

Распространять только исходный tarball; easy-install (или pip или buildout, или любой другой менеджер/установщик зависимостей), создаст для вас яйцо для версии python, используемой для ее установки.

Вам нужно только создавать яйца для распространения только для пакетов с C-расширениями, а затем только для Windows, потому что большинству систем Windows не нужны инструменты, необходимые для сборки самого яйца.

Взгляните на PyPI, чтобы увидеть много примеров этого, например zope.interface page. Обратите внимание, что существуют только .egg-дистрибутивы для версий 2.4, 2.5 и 2.6 для python для Windows. Все остальное просто использует загрузку tar2 .tar.gz и строит локальный .egg по мере необходимости.

Вы создаете исходный архив с помощью команды setup.py sdist. Лично я использую jarn.mkrelease; он автоматизирует большую часть процесса для вас (например, загружает исходный дистрибутив на сервер распространения).