[devel] Модули python3
Ivan Zakharyaschev
imz на altlinux.org
Вт Мар 27 20:30:36 MSK 2018
Hello!
On Tue, 27 Mar 2018, Aleksei Nikiforov wrote:
> Я пытаюсь разобраться с обновлением python3 до версии 3.6.x и возник вопрос:
> почему архитектурно-зависимые модули python3 в основном лежат в
> % _libdir/python3 вместо %_libdir/python3.5? Если бы модули лежали в
> % _libdir/python3.5, то рядом в %_libdir/python3.6 можно было бы положить
> модули для python-3.6.x, а в будущем и для 3.7.x, а сейчас обновление
> python-3 невозможно без одномоментной пересборки всего содержимого
> %_libdir/python3 c новой версией python3.
Не совсем так. Только бинарных модулей.
Во-первых, из-за стремления к политике поддерживать только один вариант в
Сизифе. С этим все согласились и при последней пересборке с python 3.5.
Во-вторых, технически это тогда должно было бы реализовываться по-другому.
Если noarch-пакеты общие, как сейчас, т.е. подходят для использования
любой версией python3, то механизм Requires+Provides в rpm не позволяет
выразить нужные условия работоспособности. Например:
модуль a импортирует noarch-модуль b, b импортирует c.
a и с -- бинарные.
Тогда когда импортируется a для python 3.6, должен импортироваться b, а
потом c для python 3.6 тоже. И так же для python 3.5. Соответсвующий
Requires в пакете с модулем b невозможно написать.
Раз так не получается, остаётся только сборка каждого модуля для каждой
версии питона, т.е. все-все-все модули в Сизифе надо будет собрать ещё
раз. Ну и этого может не хотеться, например, потому что слишком долгий
процесс, если делать вручную.
Теоретически, конечно, всякие варианты возможно, но у нас сейчас такой
выбран. Вероятно, в Debian по-другому. В Сизифе тоже были предусмотрены
такие механизмы для размножения модулей, остались атавизмы в виде всяких
%python_setup_module, которые сейчас не очень полезны. (И этого уже нет
для Python 3.)
--
Best regards,
Ivan
Подробная информация о списке рассылки Devel