instalando com o gerenciador de pacotes do sistema

instalando com o gerenciador de pacotes do sistema

Estou experimentando o Alpine-Linux e não está funcionando como esperado.

Eu tento usar pip install cryptography, mas demora uma eternidade e para nessa saída incompreensível

Running command /usr/local/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-h925mzyj/cryptography/setup.py';f=getattr(tokenize, 'open', open)(__f le__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-gdaazboj --python-tag cp36

O que posso fazer sobre isso?

Responder1

Alpine é uma distribuição que causa dor de cabeça para a maioria dos pacotes Python que fornecem extensões C/C++ (código escrito em C/C++ que é compilado em um objeto compartilhado e carregado em Python por meio de uma biblioteca de funções estrangeira). A razão para isso é quePEP 513cuja definição de portabilidade entre distribuições Linux manylinux1é baseada em glibc/glibcxx. Como o Alpine usa musl libc, nenhuma manylinux1roda compatível pode ser instalada no Alpine. Então quando você emite pip install cryptography, a roda com as extensões compiladas é filtrada e piptenta construir o pacote com todas as extensões C do código-fonte.

instalando com o gerenciador de pacotes do sistema

Esta é a forma preferida e foi mencionada por @GracefulRestart nos comentários; use-o se você não precisar da versão mais recente do pacote.Alpine oferece o cryptographypacote pré-construído, atualmente é o cryptography<=2.1.4. Instale-o com apk:

$ apk add py-cryptography

instalando com pip

Se você precisar da versão mais recente, você pode tentar construí-la a partir do código-fonte instalando com pip.

Preparando o ambiente de construção

Você precisará do compilador e das bibliotecas com arquivos de cabeçalho: musl, OpenSSL, libffi e o próprio Python:

$ apk add gcc musl-dev libffi-dev openssl-dev python3-dev

Prédio

pip install pkgnameoculta o log de construção por padrão. Para ver o log de compilação completo, adicione -vvvpara aumentar o detalhamento. (Opcional) Além disso, você pode proibir explicitamente a instalação manylinux1de rodas adicionando --no-binary=pkgnamepara que a compilação da fonte seja aplicada.

$ pip install cryptography -vvv --no-binary=cryptography

informação relacionada