Fabric: ImportError:Cryptoという名前のモジュールがありません

作成日 2016年04月29日  ·  3コメント  ·  ソース: fabric/fabric

やあ、

ファブリックに依存するプライベートプロジェクトがあります。 具体的には、 fabric==1.10.2を固定します。

今日、このプロジェクトのビルドは、次のスタックトレースで不思議なことに失敗し始めました。

19:22:54.233     from fabric import api as fabric_api
19:22:54.233   File "/home/go/work/pipelines/make-ci-00/code/.venv/local/lib/python2.7/site-packages/fabric/api.py", line 11, in <module>
19:22:54.233     from fabric.decorators import (hosts, roles, runs_once, with_settings, task,
19:22:54.233   File "/home/go/work/pipelines/make-ci-00/code/.venv/local/lib/python2.7/site-packages/fabric/decorators.py", line 9, in <module>
19:22:54.233     from Crypto import Random
19:22:54.233 ImportError: No module named Crypto

ファブリックは何週間も同じバージョンに固定されています。 ファブリックと一緒にpycrypto手動でインストールすると、この問題が解決します。

Crypto.Random明示的にインポートしているにもかかわらず、ファブリックの唯一の依存関係はparamikoであり、pycryptoparamikoドキュメント以外で

IMO pycryptoシンボルをファブリック内に明示的にインポートする場合、 pycryptosetup.py内の依存関係として引用する必要があります。

ありがとう!

最も参考になるコメント

Paramiko 2.0は、最近リリースされた(と私はに依存だと思うcryptographyではなくpycrypto )。 setup.py、1.10.3バージョンは制限します。 たぶん1.10.3にアップグレードすると役立つでしょう。

これはc7d3034b5f217f2b4e7989f2c8e9bbea335be270で変更されたようです

全てのコメント3件

Paramiko 2.0は、最近リリースされた(と私はに依存だと思うcryptographyではなくpycrypto )。 setup.py、1.10.3バージョンは制限します。 たぶん1.10.3にアップグレードすると役立つでしょう。

これはc7d3034b5f217f2b4e7989f2c8e9bbea335be270で変更されたようです

1.11.1ぶつかると、この問題が修正されたことを確認できます。 1.10.2が今日壊れることを決めたのはなぜだろうか...

@jamesobは、新しい環境にFabricを再インストールすることによってトリガーされましたか? @gtbackが指摘したように、paramikoは最近変更され、この種のことを回避するために、そのピンをparamiko <2に固定する以前のFabリリースを公開しました。 あなたは物事が壊れた理由である可能性が高いものの1つにいませんでした。

とはいえ、Cryptoをどこにでも直接インポートしていることに気づいていませんでした。 見ただけで、PyCrypto +並列化の癖に対処するために、いくつかのばかげた調整を行う必要がありました。 Paramikoバージョンのピンを元に戻す場合は変更する必要があります(paramiko 2が安定していることが確認できたら、おそらくいつかやりたいと思います)。 だから、これを浮上させてくれてありがとう:)

このページは役に立ちましたか?
0 / 5 - 0 評価