
alpine-linux를 실험 중인데 예상대로 작동하지 않습니다.
사용해 보았는데 pip install cryptography
시간이 오래 걸리고 이해할 수 없는 출력에서 멈춥니다.
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
어떻게 해야 합니까?
답변1
Alpine은 C/C++ 확장(공유 객체로 컴파일되고 외부 함수 라이브러리를 통해 Python에 로드되는 C/C++로 작성된 코드)을 제공하는 대부분의 Python 패키지에 대한 골치 아픈 배포판입니다. 그 이유는 바로 그것이다.PEP 513Linux 배포판 간의 이식성 정의는 manylinux1
glibc/glibcxx를 기반으로 합니다. Alpine은 musl libc를 사용하므로 manylinux1
Alpine에는 호환되는 휠을 설치할 수 없습니다. 따라서 를 실행하면 pip install cryptography
컴파일된 확장이 포함된 휠이 필터링되고 pip
소스의 모든 C 확장으로 패키지를 빌드하려고 시도합니다.
시스템 패키지 관리자로 설치
이는 선호되는 방법이며 주석에서 @GracefulRestart에 의해 언급되었습니다. 최신 버전의 패키지가 필요하지 않은 경우 이 패키지를 사용하세요.Alpine은 사전 구축된 cryptography
패키지를 제공합니다., 현재는 입니다 cryptography<=2.1.4
. 다음을 사용하여 설치하십시오 apk
.
$ apk add py-cryptography
pip로 설치하기
최첨단 버전이 필요한 경우 를 설치하여 소스에서 빌드해 볼 수 있습니다 pip
.
빌드 환경 준비
musl, OpenSSL, libffi 및 Python 자체와 같은 헤더 파일이 포함된 컴파일러와 라이브러리가 필요합니다.
$ apk add gcc musl-dev libffi-dev openssl-dev python3-dev
건물
pip install pkgname
기본적으로 빌드 로그를 숨깁니다. 전체 빌드 로그를 보려면 추가 -vvv
하여 자세한 정보를 늘리세요. (선택 사항) 또한 소스에서 빌드가 적용되도록 manylinux1
휠을 추가하여 명시적으로 설치를 금지할 수도 있습니다.--no-binary=pkgname
$ pip install cryptography -vvv --no-binary=cryptography