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>.