システムパッケージマネージャーを使用してインストールする

システムパッケージマネージャーを使用してインストールする

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++拡張機能(C/C++で記述され、共有オブジェクトにコンパイルされ、外部関数ライブラリを介してPythonにロードされるコード)を同梱するほとんどのPythonパッケージにとって頭痛の種となるディストリビューションです。その理由は、ペップ513Linux ディストリビューション間の移植性の定義である は、manylinux1glibc/glibcxx に基づいています。Alpine は musl libc を使用するため、manylinux1Alpine に互換性のあるホイールをインストールすることはできません。そのため、 を発行するとpip install cryptography、コンパイルされた拡張機能を持つホイールはフィルタリングされ、pipソースからすべての C 拡張機能を含むパッケージをビルドしようとします。

システムパッケージマネージャーを使用してインストールする

これは推奨される方法であり、コメントで @GracefulRestart によって言及されました。パッケージの最新版が必要ない場合は、この方法を使用してください。アルパインはプレビルド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

関連情報