A Coleção de Ports suporta a instalação paralela de várias versões do Python. Os ports devem usar um interpretador python, de acordo com a configuração do usuário de PYTHON_VERSION. Mais proeminentemente, isso significa substituir o caminho para o executável python em scripts com o valor de PYTHON_CMD.
Ports que instalam arquivos sob PYTHON_SITELIBDIR devem usar o prefixo pyXY- no prefixo do nome do pacote, assim o nome do pacote irá incorporar a versão do Python em que estão instalados.
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}USES=python | O port precisa do Python. A versão mínima necessária pode ser especificada com valores como 2.7+. Os intervalos de versão também podem ser especificados separando dois números de versão com um traço: USES=python:3.2-3.3 |
USE_PYTHON=distutils | Use o distutils do Python para configurar, compilar e instalar. Isso é necessário quando o port vem com setup.py. Isso sobrescreve os targets do-build e do-install e também pode substituir do-configure se o GNU_CONFIGURE não estiver definido. Além disso, isso implica em USE_PYTHON=flavors. |
USE_PYTHON=autoplist | Crie a lista de empacotamento automaticamente. Isso também requer que USE_PYTHON=distutils seja definido. |
USE_PYTHON=concurrent | O port usará um prefixo exclusivo, normalmente PYTHON_PKGNAMEPREFIX para determinados diretórios, como EXAMPLESDIR e DOCSDIR e também irá acrescentar um sufixo, a versão python de PYTHON_VER, para os binários e scripts que serão instalados. Isso permite que os ports sejam instalados para diferentes versões do Python ao mesmo tempo, o que de outra forma instalaria arquivos conflitantes. |
USE_PYTHON=flavors | O port não usa distutils, mas ainda suporta várias versões do Python. .FLAVORS será definido para as versões suportadas do Python. Veja Seção 7.4, “USES=python e Flavors” para maiores informações. |
USE_PYTHON=optsuffix | Se a versão atual do Python não for a versão padrão, o port receberá PKGNAMESUFFIX=${PYTHON_PKGNAMESUFFIX}. É útil apenas com flavors. |
PYTHON_PKGNAMEPREFIX | Usado como um PKGNAMEPREFIX para distinguir pacotes para diferentes versões do Python. Exemplo: py27- |
PYTHON_SITELIBDIR | Local da árvore site-packages, que contém o caminho de instalação do Python (geralmente LOCALBASE). A PYTHON_SITELIBDIR pode ser muito útil ao instalar módulos Python. |
PYTHONPREFIX_SITELIBDIR | A variante PREFIX-clean do PYTHON_SITELIBDIR. Sempre use %%PYTHON_SITELIBDIR%% no pkg-plist quando possível. O valor padrão de %%PYTHON_SITELIBDIR%% é lib/python%%PYTHON_VERSION%%/site-packages |
PYTHON_CMD | Linha de comando do interpretador Python, incluindo o número da versão. |
PYNUMERIC | Linha de dependência para extensão numérica. |
PYNUMPY | Linha de dependência para a nova extensão numérica, numpy. (PYNUMERIC foi descontinuado pelo fornecedor upstream). |
PYXML | Linha de dependência para a extensão XML (não é necessária para o Python 2.0 e superior, pois também está na distribuição base). |
PY_ENUM34 | Dependência condicional do devel/py-enum34 dependendo da versão do Python. |
PY_ENUM_COMPAT | Dependência condicional do devel/py-enum-compat dependendo da versão do Python. |
PY_PATHLIB | Dependência condicional do devel/py-pathlib dependendo da versão do Python. |
PY_IPADDRESS | Dependência condicional do net/py-ipaddress dependendo da versão do Python. |
PY_FUTURES | Dependência condicional do devel/py-futures dependendo da versão do Python. |
Uma lista completa das variáveis disponíveis pode ser encontrada em /usr/ports/Mk/Uses/python.mk.
Todas as dependências para ports Python usando Python flavors (quer com USE_PYTHON=distutils ou USE_PYTHON=flavors) deve ter o flavor Python anexado à sua origem usando @${PY_FLAVOR}. Veja Exemplo 6.25, “Makefile para um Módulo Python Simples”.
PORTNAME= sample
DISTVERSION= 1.2.3
CATEGORIES= devel
MAINTAINER= john@doe.tld
COMMENT= Python sample module
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}
USES= python
USE_PYTHON= autoplist distutils
.include <bsd.port.mk>Algumas aplicações Python afirmam ter suporte a DESTDIR (que seria necessário para fazer o staging), mas ele está quebrado (Mailman até a versão 2.1.16, por exemplo). Isso pode ser contornado, recompilando os scripts. Isso pode ser feito, por exemplo, no target post-build. Assumindo que os scripts Python devem estar em PYTHONPREFIX_SITELIBDIR após a instalação, esta solução pode ser aplicada:
(cd ${STAGEDIR}${PREFIX} \
&& ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \
-d ${PREFIX} -f ${PYTHONPREFIX_SITELIBDIR:S;${PREFIX}/;;})Isso recompila os fontes com um caminho relativo ao diretório de stage e acrescenta o valor de PREFIX para o nome do arquivo gravado no arquivo bytecode de saída por -d. O -f é necessário para forçar a recompilação e o :S;${PREFIX}/;; remove prefixos do valor de PYTHONPREFIX_SITELIBDIR para torná-lo relativo ao PREFIX.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.