
我正在嘗試 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
對於大多數帶有 C/C++ 擴充功能(用 C/C++ 編寫的程式碼,編譯為共享物件並透過外部函數庫載入到 Python 中)的 Python 套件來說,Alpine 是一個令人頭痛的發行版。原因在於公眾編號 513Linux 發行版之間的可移植性定義manylinux1
是基於 glibc/glibcxx。由於Alpine使用musl libc,因此manylinux1
Alpine上無法安裝相容的wheel。因此,當您發出時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