
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 ディストリビューション間の移植性の定義である は、manylinux1
glibc/glibcxx に基づいています。Alpine は musl libc を使用するため、manylinux1
Alpine に互換性のあるホイールをインストールすることはできません。そのため、 を発行すると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