やあ、
ファブリックに依存するプライベートプロジェクトがあります。 具体的には、 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であり、pycryptoはparamikoドキュメント以外で
IMO pycrypto
シンボルをファブリック内に明示的にインポートする場合、 pycrypto
はsetup.py
内の依存関係として引用する必要があります。
ありがとう!
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が安定していることが確認できたら、おそらくいつかやりたいと思います)。 だから、これを浮上させてくれてありがとう:)
最も参考になるコメント
Paramiko 2.0は、最近リリースされた(と私はに依存だと思う
cryptography
ではなくpycrypto
)。 setup.pyの、1.10.3バージョンは制限します。 たぶん1.10.3にアップグレードすると役立つでしょう。これはc7d3034b5f217f2b4e7989f2c8e9bbea335be270で変更されたようです