Как стать автором
Обновить

Комментарии 14

Прекрасная статья, спасибо за полезную информацию!

И отдельное спасибо за то, что пользуетесь Питоном 3 на продакшне, ускоряя прогресс :-)
Вы изобрели setuptools и eggs, поздравляю :)
setuptools — это все-таки инструмент инсталляции новых модулей в питон.
В этой статье просто хотелось рассказать, что сами модули, уже будучи установленными, могут находиться в zip-архивах.
Это не совсем правда. Setuptools — это в первую очередь не инсталляция модулей, а их сборка в яйца. И, да, каждое такое яйцо (оно собственно и является zip-архивом с метаданными) можно добавить в PYTHONPATH/sys.path и использовать. А можно ещё воспользоваться pkg_resources.Distribution и подключать в рантайме нужные яйца с нужными библиотеками, но это вам уже вряд ли нужно.
Все вами сказанное абсолютно верно.
Просто когда я писал «инструмент инсталляции»,
то установку в виде «яйца» я относил к одному из вариантов инсталляции модулей.
Позволю себе небольшое уточнение.
zip-модули в питон мы не изобретали, они были изобретены самими разработчиками языка.
Здесь просто рассказано как их создавать, и какие при этом могут возникнуть сложности
Я собственно о том же :) Мне кажется, что надо всё-таки логично и правильно в большинстве случаев делать это при помощи специально предназначенных инструментов. Я представляю себе ситуации, когда это может быть нужно делать руками (мне как раз это приходится делать), но, кажется, в вашем случае это не так.
Да, в нашем случае действительно все несколько иначе.

Мы собираем zip-модули по описанной в статье схеме и складываем их в site-packages.
плюс у нас настроен авто-импорт (расширение sys.path) для всех zip-файлов лежащих в site-packages.

Поскольку мы рассматриваем нашу сборку питона как embedded-solution, которая прозрачно сосуществует (никак не конфликтуя и не пересекаясь) с любой другой официальной инсталляцией питона, мы можем себе такое позволить.
Главное, чтобы это все не сломало возможность использовать сторонние egg, и вообще пекеджи. Большой плюс питона как скриптового языка — именно в возможности использовать столько всего интересного с PyPI.
Если вы собираете свой собственный Питон — выложите символы к нему, пожалуйста, как это делается для официальных сборок. Они, бывает, пригождаются.
Спасибо, интересное предложение, мы его рассмотрим.
Но на в данный момент релизов вместе с интерпретатором питона еще не было, только внутренние исследования.
С компилированием какой-то стрёмный велосипед получился. Есть же модули py_compile и compileall.
Если бы указанные вами модули обеспечивали необходимый фукционал по созданию модулей, упаковнных в zip-файл,
мы бы непременно ими воспользовались. Так или иначе, код модуля py_comile дейстивительно послужил прототипом для представленной здесь утилиты mkpyzip.
Да, действительно, эти модули умеют компилировать только в непосредственно файл. Можно было в какой-нибудь временной папке скомпилировать и заархивировать директорию целиком. Дилемма — или дергать жесткий диск зря, или использовать код, который в новой реализации может сломаться :).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий