[devel] Сборка пакетов , содержащих .py
Andrey Orlov
=?iso-8859-1?q?cray_=CE=C1_neural=2Eru?=
Сб Янв 17 00:02:34 MSK 2004
On Friday 16 January 2004 22:58, Alexey Morozov wrote:
> > Скомпиленный питоновский модуль нельзя разместить с другим путем. Так
>
> Но можно же задать при сборке собственно питона другое расположение
> библиотечных путей, правда?
Библиотечный путь тут не причем. Речь о пути к исходному файлу питона в момент
компиляции.
>> Андрей, я понимаю Вашу озабоченность проблемами сборки Zope. Но у меня
> сейчас немного другие проблемы, не затрагивающие впрямую Zope. И я НЕ
> претендую на универсальность моего решения.
Я Zope привожу только как пример. Просто этот пример подтвержден другими
людьми и мне есть на что сослатся. А так - проблемы могут возникнуть практически
со всеми скриптами.
> > > > Сухой остаток: я бы попросил ничего не менять, не разобравшись.
> Именно это я и пытаюсь сделать.
>
> > Прекомпиляцию модулей лучше пока оставить, тем более что именно в
> > контексте етого треда, ее изъятие _вашей_ проблемы не решит, из-за
> > непериносимости _исходного_ кода на языке питон в _общем_ случае.
>
> Мне, все же кажется, что _мою_ проблему это решит замечательно,
> поскольку те конкретные скрипты, о которых я веду речь, нормально
> работают на всех последних версиях питона. Что же касается всех
Я уже предлагал 2 варианта:
1. отменять байт-комплилицию для определенного каталога (надо только посотреть ка это лушче сделать)
2. не включать байт-код в пакет, если он не нужен. Ну и хрен с ним, что скопилился.
> остальных python-скриптов в мире, то, как мне кажется, с принудительной
> байт-компиляцией мы получаем _две_ проблемы вместо _одной_:
> во-первых, возможны нюансы, касающиеся переносимости собственно кода
> (но на это хоть диагностика будет внятная),
У нас нет переносимости кода - мы пересобираем модули и пакеты при появлении
нового питона, нового С, и т.п.
> > во-вторых, возможны проблемы с переносимостью байткода как такового
> (и я совершенно не уверен в том, как поведет себя питон, увидев
> несовместимый байт-код).
У нас нет перенесения байт кода. По вышеописанным причинам. В каждом пакете
стоит требование определенного питона. Кроме того альтернативы, python22 & 23 скомпиены
с разными путями, а модули для разных питонов ложаться в разные каталоги. И вообще,
как я уже сказал, python22 в норме использоватся не должен вообще.
> В данном треде я совсем НЕ РАССМАТРИВАЛ первую проблему, целиком
> занимаясь исключительно второй.
>
> > Если вы считаете что _ваш_ пакет не должен содержать *pyc & *pyo - вы
> > можете не _включать_ их в секцию files _вашего_ spec'а. А все
>
> Могу. Но, во-первых, для модулей, все же, _хочется_ включать байткод,
> причем, откомпилированный именно тем питоном, который потом будет этот
> модуль использовать (сейчас это, по факту НЕ ТАК, если вместо %__python
> используется, скажем, python-2.3).
Интересно, почему это не так? У меня это вроде как так. И на описанную вами ситуацию
я ни разу не нарывался. Мбть что-то у вас подпраить надо?
> А во-вторых, мне, все же, больше
> нравится оперировать списком файлов, сформированных на этапе
> setup.py install
>
> а не произвольными каталогами (хотя, возможно, это и относится к области
> [неверных] личных предпочтений).
А вы и оперируете этим списком. Просто фильтруете и раскладываете его по
трем пакетам. Кроме того, если этот список содержит прекомпиленные модули -
то чего же вы от них отказываетесть? А если он их не содержит - то как же они
попадают в пакет, если вы используете этот список? Что-то вы тут меня запутать
пытаетесь, похоже ;).
> > Давайте, только прислушивайтесь к чужому мнению?
> Как мне кажется, и так уже прислушиваюсь.
Сорри, если кажется что я наезжаю - я просто не выспался и никак не могу
уразуметь самого главного: в чем собственно проблема? Ну давайте я выкину
из сизифа python22 - проблема пропадет? Если так, то представьте себе
что я это сделал.
> > 2. Перенос исходного кода из одной версии в другую может приводить к
> > ошибкам, что отменяет возможность решения проблемы двух питонов за
> > счет отказа от прекомпиленного кода;
>
> Нет. Это решение _другой_ проблемы. См. выше.
Я тогда так и не понял о чем речь. Т.е. какую проблему вы пытаетесь решить
> > 3. Сама проблема двух питонов является надуманной, так как никакой
> > необходимости держать два питона на одной машине я не знаю;
>
> Андрей, выше Вы пишете о том, что при переезде с python-2.2 на
> python-2.3 отвалилась большая часть Zope, и понадобилось ненулевое время
> на исправление ситуации. В другом письме Вы (я все же надеюсь, что это
> были Вы) пишете, что разработчики в своей деятельности должны
> использовать самые модные наработки
Я писал - самые современные, еще раз, не надо искажать мои слова. Именно
поэтому я потратил это время, что бы очередной раз избавится от необходимости
держать в дистрибутиве старый питон. И я не понимаю почему кто-то отказывается
это делать. Переходить на новую версию питона все равно придется. То,
что мы держим в сизифе python22 - это только в помощь тем, кто переходит.
И я не услышал на свои прямые неоднократные вопросы в рассылке ни одного
ответа, что у кого-то были непреодолимые трудности с этим переходом.
Только вы зачем-то пытаетесь придумать какой-то невозможный гибрид из
двух разных версий питона в одном дистрибутиве, с пересборкой всех модулей
и скриптов под оба питона сразу. Я не понимаю зачем это нужно. Мало того,
я не понимаю, если вам это нужно - то почему вы списали со счетов python21 и
python1.52? Я могу привести примеры кода и примеры пакетов, для которых
такое списание может оказатся преждевременным (некоторые
продукты для того же Zope). Но - мы же их портируем...
> Отсюда с необходимостью следует, что, если мы говорим о том, что,
> с одной стороны, HEAD ведется на последнем (в данный момент, 2.3)
> питоне, а, с другой стороны, поддержку предыдущих версий _вашего_
> продукта необходимо осуществлять в старом окружении, то мы с
> необходимостью приходим к двум питонам и двум версиям каждого из модулей
> на машине, по крайней мере, человека, который одновременно осуществляет
> и разработку, и поддержку. Возможна, конечно, установка второй версии
> питона куда-нибудь в chroot/vmware и т.п. но это требует по сути,
> полноценного виртуального сервера.
Я уже объяснил - для поддежки старых версий существует AltLinuxMaster22 и
апдейты к нему. Везде на хостинге у меня стоит ALM22, а в одном сильно коммерческом
месте - ALM20, и я _не_собираюсь_ его апдейтить до сизифа по неоднократно
описанным вами причинам. Там стоит софт, на портирование которого нет
денег. Но сизиф - для разработчиков.
Я думаю, что это общее мнение. Кстати, для поддержки мастера я, по рекомендации
старших товарищей, специально держу установленный мастер и считаю что это
единственно верный путь. Работаю с ним иногда через chroot, иногда - перегружаюсь.
Это всего около 150 метров.
> > По поводу py, pyc, pyo - я сейчас работаю над тем, что бы начится
> > безболезненно разбивать модули на три составляющих:
> > Замечательно. То, как это делает, н-р, emacs, можно взять за основу?
Напомните, что делает emacs?
> И, кстати, я испугался заранее фразы "решает еще ряд проблем". Что там
> еще не так?
В основном это так скажем, условно, "словари". Код очень большого объема, частично
автоматически генерированный. Если мы ставим py+pyc+pyo - получается некислый
объем на диске. Хотя из них, при соблюдении определенных предостарожностей, любые
два можно изъять. Сейчас в rPAS (это собствено пакет на котором я ставлю опыты)
спокойно работает при установке для таких продуктов только файлов *pyc, когда
цели отладки требуют - всегда можно доставить соотв. пакет -src. В принципе,
удобно, но в rPAS и так 15 пакетов, а с таким делением получается 35, что немного
тяжело для поддержки. C Zope ситуация примерно та же. Вот сбсно над проблемами
автоматизации я в свободное время размышляю. Кстати, я не прочь поразмышлять
вместе, тем более, что насколько я понял, вы хороший специалист по макросам rpm и т.п.
--
WthBstRgrds -- Андрей Орлов --
--- http: www.neural.ru, mail: cray на neural.ru, jid: cray на altlinux.org ---
----------------------------------------
Подробная информация о списке рассылки Devel