6.14. Использование Python

Коллекция Портов поддерживает параллельную установку множества версий Python. Следует убедиться, что в портах используется правильный интерпретатор python в соответствии с переменной PYTHON_VERSION, установленной пользователем. По большей части это означает замену пути к исполняемому файлу python в сценариях на значение переменной PYTHON_CMD.

Порты, устанавливающие файлы под каталог PYTHON_SITELIBDIR, должны использовать префикс вида pyXY-, таким образом названия пакетов будут включать в себя версию Python, с которой они установлены.

PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
Таблица 6.21. Переменные для портов, которые используют Python
USE_PYTHONДля этого порта нужен Python. Минимальная требуемая версия может быть указана с таким значением как 2.6+. Также можно указан диапазон версий с разделением двух версий через -, например: 2.6-2.7
USE_PYDISTUTILSИспользовать дистрибутивные утилиты (distutils) Python для конфигурации, компиляции и установки. Необходимо, если порт использует setup.py. Переопределяет цели do-build и do-install и также может переопределять do-configure, если не определена GNU_CONFIGURE.
PYTHON_PKGNAMEPREFIXИспользуется как PKGNAMEPREFIX для отличия пакетов, использующих разные версии Python. Пример: py24-
PYTHON_SITELIBDIRМестонахождение дерева site-packages, которое содержит путь установки Python (обычно, LOCALBASE). Переменная PYTHON_SITELIBDIR может быть очень полезной при установке модулей Python.
PYTHONPREFIX_SITELIBDIRВариант PYTHON_SITELIBDIR без PREFIX. По возможности всегда используйте %%PYTHON_SITELIBDIR%% в pkg-plist. Значением по умолчанию для %%PYTHON_SITELIBDIR%% является lib/python%%PYTHON_VERSION%%/site-packages.
PYTHON_CMDКомандная строка интерпретатора Python, включая номер версии.
PYNUMERICСтрока зависимости для расширения numeric.
PYNUMPYСтрока зависимости для нового расширения numeric, numpy (PYNUMERIC объявлен устаревшим вышестоящим производителем).
PYXMLСтрока зависимости для расширения XML (не нужно для Python 2.0 и выше, т.к. включено в основной дистрибутив).

Полный перечень доступных переменных можно найти в /usr/ports/Mk/bsd.python.mk.

Некоторые приложения на Python заявляют о поддержке DESTDIR (требуется для staging), которая не работает (в частности, у Mailman до версии 2.1.16). Ограничение можно обойти путём перекомпиляции сценариев. Например, это можно выполнить в цели post-build. С учётом того, что после установки предполагаемое место размещения сценариев Python будет находиться в PYTHONPREFIX_SITELIBDIR, можно применить следующее решение:

(cd ${STAGEDIR}${PREFIX} \
  && ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \
   -d ${PREFIX} -f ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;})

Эта команда перекомпилирует исходный текст с заменой путей на относительные к каталогу сборки, а также дописывает значение PREFIX перед именем файла, записанного в выходном файле с промежуточным представлением, с использованием -d. -f требуется для безусловной перекомпиляции, :S;${PREFIX}/;; удаляет префиксы из значения переменной PYTHONPREFIX_SITELIBDIR, чтобы сделать его относительным к PREFIX.

Для этого требуется Python 2.7 или выше. Это не работает с Python 2.6.

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.