Next: Модули Perl, Previous: Пакеты Emacs, Up: Принципы опакечивания [Contents][Index]
В настоящее время мы поставляем пакеты Python 2 и Python 3 через переменную
Scheme под именами python-2
и python
в соответствии с
Номера версий. Чтобы предотвратить путанницу и конфликты имён других
языков программирования, модули Python содержат слово python
.
Некоторые модули совместимы только с одной версией Python, другие - с
обоими. Если пакет Foo работает только с Python 3, мы называем его
python-foo
. Если он работает только с Python 2, мы называем его
python2-foo
. Если он совместим с обеими версиями, мы создаём два
пакета с соответствующими именами.
Если проект уже содержит слово python
, мы отбрасываем его; например,
модуль python-dateutil опакечен под именем python-dateutil
и
python2-dateutil
. Если имя проекта начинается с py
(т.е.
pytz
), мы оставляем такое имя и добавляем префикс, как это описано
выше.
Информация о зависимостях для пакетов Python обычно доступна в дереве исходников пакета с различной степенью точности — в файле setup.py, в requirements.txt или в tox.ini.
Ваша миссия при написании рецепта сборки пакета Python — отобразить эти
зависимости в должном типе "input" (see inputs). Хотя
импортёр pypi
обычно отрабатывает хорошо (see Запуск guix import), возможно, вы желаете просмотреть приведённый чек-лист, чтобы
узнать о зависимостях.
setuptools
и
pip
, установленные как Python 3.4 по умолчанию. Так что не нужно
обозначать их как входные данные (input). guix lint
сообщит об
ошибке, если это происходит.
propagated-inputs
. Они обычно определены с ключевым словом
install_requires
в setup.py или в файле
requirements.txt.
setup_requires
в setup.py, или только
для тестов, то есть со словом tests_require
, указываются в
native-inputs
. Основная причина в том, что, первое, они не должны
распространяться, потому что они не нужны для запуска и работы, и второе, в
контексте кросс-компиляции это "нативные" входные данные, которые нам
требуются.
Примерами являются фреймворки тестирования pytest
, mock
и
nose
. Конечно, если какой-либо из этих пакетов также необходим во
время запуска и работы, его следует указывать в propagated-inputs
.
inputs
,
например, программы или библиотеки C, необходимые для сборки пакетов Python,
которые используют расширения C.
extras_require
), самостоятельно решите, нужно ли их добавлять в
зависимости от их полезности или избыточности (see guix size
).
Next: Модули Perl, Previous: Пакеты Emacs, Up: Принципы опакечивания [Contents][Index]