Next: Модули Perl, Previous: Пакеты Emacs, Up: Принципы опакечивания [Contents][Index]
В настоящее время мы поставляем пакеты Python 2 и Python 3 через переменную
Scheme под именами python-2
и python
в соответствии с
Номера версий. Чтобы предотвратить путанницу и конфликты имён других
языков программирования, модули Python содержат слово python
.
Some modules are compatible with only one version of Python, others with
both. If the package Foo is compiled with Python 3, we name it
python-foo
. If it is compiled with Python 2, we name it
python2-foo
. Packages should be added when they are necessary; we
don’t add Python 2 variants of the package unless we are going to use them.
Если проект уже содержит слово 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]