Коллекция Портов поддерживает параллельную установку
множества версий Python. Следует убедиться, что в портах
используется правильный интерпретатор python
в соответствии с переменной PYTHON_VERSION
,
установленной пользователем. По большей части это означает
замену пути к исполняемому файлу python
в
сценариях на значение переменной
PYTHON_CMD
.
Порты, устанавливающие файлы под каталог
PYTHON_SITELIBDIR
, должны использовать
префикс вида pyXY-
, таким образом названия
пакетов будут включать в себя версию Python, с которой они
установлены.
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
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>.