alpine-linux 命令需要很長時間
我正在嘗試使用 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
我能做些什麼呢?
對於大多數提供 C/C++ 擴展(用 C/C++ 編寫的程式碼,編譯為共享對象並通過外部函式庫在 Python 中載入)的大多數 Python 包來說,Alpine 是一個令人頭疼的發行版。原因是PEP 513,它在 Linux 發行版之間的可移植性定義
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