使用系統套件管理器安裝

使用系統套件管理器安裝

我正在嘗試 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,因此manylinux1Alpine上無法安裝相容的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

相關內容