Python3

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
48px-Mail-mark-junk red.svg.png
Эта статья протухла.
Её нужно существенно доработать или удалить


Python3 в Sisyphus[править]

Python3 собран в Sisyphus параллельно с Python2 и будет так существовать достаточно длительное время (по полного исчезновения Python2, которое в обозримом будущем вряд ли случится). Языки Python3 и Python2 отличаются синтаксисом, список различий доступен на http://docs.python.org/py3k/whatsnew/3.0.html

Упаковка модулей Python3[править]

Примеры упаковки[править]

Пример упаковки модуля Python3 из того же исходника, из которого пакуется модуль Python2 можно посмотреть тут.

Используемые макросы[править]

Макросы для сборки модулей python3 содержатся в пакете rpm-build-python3 и аналогичны тем, что используются у нас для python.

Пути[править]

В настоящий момент всё, что лежит в /usr/lib{,64}/python3.x считается написанным на Python3, все остальные .py файлы воспринимаются как Python2. Если хочется иметь Python3-файлы в других каталогах, то стоит использовать макрос %add_python3_path /path/to/dir/with/python3 (при этом .py-файлы будут компилироваться с помощью Python3, поиск зависимостей будет осуществляться с помощью Python3). Возможны случаи, когда захочется выполнить автоматическую генерацию Provides для модулей Python3, лежащих по нестандартному пути. В этом случае к предыдущему макросу потребуется добавить %add_python3_lib_path /path/to/dir/with/python3

Специфика[править]

  1. При сборке модуля python3 из того же исходника, из которого собирается модуль python требуется оборачивать такую сборку в %if_with python3
  2. Группа пакетов - Development/Python3
  3. Python3/rpm-build-python3 - не базовая система, для использования макросов нужно писать BuildRequires(pre): rpm-build-python3
  4. Автоматический поиск Requires/Provides работает только для %python3_sitelibdir{-noarch}. Возможно, стоит добавить механизм для явного указания других путей (с исключением поиска там зависимостей с помощью python2), я подумаю. В отличие от python зависимости на python3-base генерируются явно (к примеру, "python3.2(os)").
  5. Скомпилированные .pyo/.pyc у python3 кладутся в специальный каталог __pycache__ в директории с исходником. Не забывайте их паковать.

При смене версии python3 потребуется полная пересборка. Если для сборки вам требуется бутстрап — оставляйте, пожалуйста соответствующие ручки вида %def_with, это сильно упрощает формирование задания на обновление. Для этих же целей, наверное, стоит автоматически навешивать какую-нибудь группу вида @python3 на все пакеты, из которых собралось что-то, требующее python3.*(*).

Ошибки и пожелания[править]

Ошибки и пожелания принимаются в багзиллу на пакеты python3/rpm-build-python3 или в личную почту vitty@