Hai, yang di sana,
Saya memiliki proyek pribadi yang bergantung pada kain. Secara khusus, kami menyematkan fabric==1.10.2
.
Hari ini, pembangunan proyek ini mulai gagal secara misterius dengan stacktrace berikut:
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
Kain telah disematkan ke versi yang sama selama berminggu-minggu. Menginstal pycrypto
secara manual di samping fabric menyelesaikan masalah ini.
Meskipun secara eksplisit mengimpor Crypto.Random
, satu-satunya ketergantungan fabric adalah paramiko , dan pycrypto tidak dirujuk di mana pun selain dari paramiko docs.
IMO jika Anda mengimpor simbol pycrypto
secara eksplisit di dalam fabric, pycrypto
harus dikutip sebagai dependensi dalam setup.py
.
Terima kasih!
Paramiko 2.0 baru-baru ini dirilis (dan saya pikir tergantung pada cryptography
daripada pycrypto
). Setup.py versi 1.10.2 tidak membatasi versi paramiko dengan benar, tetapi versi 1.10.3 melakukannya. Mungkin memutakhirkan ke 1.10.3 akan membantu.
Sepertinya ini diubah di c7d3034b5f217f2b4e7989f2c8e9bbea335be270
Dapat mengonfirmasi bahwa menabrak 1.11.1
telah memperbaiki masalah ini. Bertanya-tanya mengapa 1.10.2
memutuskan untuk istirahat hari ini...
@jamesob apakah ini dipicu dengan menginstal ulang Fabric di lingkungan baru? Seperti yang dicatat oleh @gtback , paramiko baru-baru ini berubah dan kami mengeluarkan rilis Fab sebelumnya yang disematkan ke paramiko<2 untuk menghindari hal semacam ini. Anda tidak berada di salah satu dari mereka yang mungkin mengapa hal-hal rusak.
Yang mengatakan, saya tidak menyadari bahwa kami secara langsung mengimpor Crypto di mana saja; baru saja melihat dan ya, kami harus melakukan beberapa tweak bodoh untuk menangani kekhasan paralelisasi PyCrypto +. Itu harus berubah jika kita pernah membatalkan pin versi Paramiko (yang mungkin ingin saya lakukan kapan-kapan, setelah kita yakin paramiko 2 stabil). Jadi, terima kasih telah memunculkan ini :)
Komentar yang paling membantu
Paramiko 2.0 baru-baru ini dirilis (dan saya pikir tergantung pada
cryptography
daripadapycrypto
). Setup.py versi 1.10.2 tidak membatasi versi paramiko dengan benar, tetapi versi 1.10.3 melakukannya. Mungkin memutakhirkan ke 1.10.3 akan membantu.Sepertinya ini diubah di c7d3034b5f217f2b4e7989f2c8e9bbea335be270