web-dev-qa-db-ja.com

Python(Windows)のpyOpenSSLを正しくインストールする

GooglePlusスプレッドシートを自動的に更新するアプリケーションを作成しようとしています。これを行うには、gspreadを設定する必要がありました。これも、機能するにはpyOpenSSLが必要です。これがないと、次のエラーがスローされます。

CryptoUnavailableError:利用可能な暗号ライブラリがありません

pipを使用して、次のコマンドを入力します。

pip install pyopenssl

そして、以下を使用してインポートします。

from OpenSSL import SSL

コードを実行しようとすると、次のエラーが発生します。

ImportError:cryptography.hazmat.bindings.openssl.bindingという名前のモジュールがありません

PyOpenSSLを複数回再インストールしようとしました。また、暗号化の依存関係を再インストールしようとしました(また、以前のバージョンのpyOpenSSLをインストールしようとしました)。

この問題は数回文書化されていますが、私が試したことがない唯一の解決策は、PythonまたはOSの新規インストールを行うことです。

助言がありますか?前もって感謝します。

6

それで頑張ってください。 WindowsでのImportErrorの問題のデバッグは、気の弱い人向けではありません。

ImportErrorcryptography.hazmat.bindings.openssl.bindingを参照していても、これが元の問題である必要はありません。何らかの理由で、私はしばしば別の問題をImportErrorシャドウイングしています。

私が最初に試みることは走ることです

python -v -c "from OpenSSL import SSL"

出力をキャプチャします。最終エラーに近い問題を探します。

次のいずれかになります。

  • cffiがバインディングのコンパイルに失敗しました(プリコンパイルされたバインディングはpip installによってインストールされているはずですが、場合によっては壊れます...)
  • 利用できないSSLDLLをインポートしようとしているバインディング(ただし、pip installによってプルする必要がありますが、それについてはよくわかりません)
  • dLLは使用可能ですが、依存するDLLが欠落しているため、ロードできません。これは、たとえばVisualStudioランタイムである可能性があります。

私の賭けは最後のポイントになります。私を助けてくれる唯一のことは、関連するmodule.pydDependency Walker で開くことでした。多くの場合、いくつかの奇妙な問題(別のDLLが間違ったアーキテクチャで見つかったなど)が原因であることが判明します。

幸運を!

1
Bluehorn