o comando alpine-linux leva para sempre

1

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?

    
por Niklas Rosencrantz 29.05.2018 / 09:09

1 resposta

5

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

instalando com o gerenciador de pacotes do sistema

Este é o caminho preferido e foi mencionado por @GracefulRestart nos comentários; use-o se você não precisar da versão de ponta do pacote. A Alpine oferece o pacote cryptography 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 de ponta, tente construí-la a partir do código-fonte instalando com pip .

Preparando o ambiente de compilaçã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

Construindo

pip install pkgname oculta o log de construção por padrão. Para ver o log de construção completo, adicione -vvv para aumentar a verbosidade. (Opcional) Além disso, você pode proibir explicitamente a instalação de manylinux1 wheels adicionando --no-binary=pkgname para que a compilação da origem seja aplicada.

$ pip install cryptography -vvv --no-binary=cryptography
    
por 03.06.2018 / 20:33