7

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

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

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

pip install pyopenssl

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

from OpenSSL import SSL

コードを実行しようとすると、次のエラーが表示されます。

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

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

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

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

4

2 に答える 2

2

頑張ってください。Windows で ImportError の問題をデバッグすることは、気弱な人向けではありません。

ImportErrorこれを参照してもcryptography.hazmat.bindings.openssl.binding、元の問題である必要はありません。何らかの理由で、私はしばしばImportError別の問題を隠しています。

私が最初に試みることは、実行することです

python -v -c "from OpenSSL import SSL"

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

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

  • cffi バインディングのコンパイルに失敗する (コンパイル済みのバインディングは によってインストールされているはずですがpip install、時々何かが壊れる...)
  • 利用できないSSL DLLをインポートしようとするバインディング(ただし、pip installによってプルされる必要がありますが、それについてはよくわかりません)
  • DLL は使用可能ですが、一部の依存 DLL が見つからないため、読み込み可能ではありません。これは、たとえば Visual Studio ランタイムである可能性があります。

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

幸運を!

于 2016-02-16T18:54:48.307 に答える
-1

これが、Ubuntuデスクトップで解決した方法です。Windowsでは解決策を見つける必要がありますが、この問題の本当の理由はLinuxとWindowsの両方で同じです

PyOpenSSL 14.x+ は cffi ベースの暗号化パッケージを使用しています。これが問題の原因である可能性があります。cffi には libffi (または libffi-dev) システム パッケージが必要です。これは Python 以外の新しい依存関係です。

まずこれを

sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

その後

pip install cryptography

ここでの重要なモジュールはlibffi-devであることに注意してください..の代わりに、 pip が既にインストールされている場合はapt-get使用することもできますpip install

それまでの間、これは pyOpenSSL バインディングに関するドキュメントに記載されています

これは「危険物」モジュールです。このモジュールは地雷、ドラゴン、レーザー銃を持った恐竜でいっぱいなので、自分が何をしているのかを 100% 確実に理解している場合にのみ使用してください。

それは私が言わなければならないかなり大胆な警告です

于 2016-02-10T05:53:38.753 に答える