Hi,
Ich habe ein privates Projekt, das vom Stoff abhängt. Konkret pinnen wir fabric==1.10.2
.
Heute sind Builds dieses Projekts mit dem folgenden Stacktrace auf mysteriöse Weise fehlgeschlagen:
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
Fabric ist seit Wochen an dieselbe Version gepinnt. Die manuelle Installation von pycrypto
neben Fabric behebt dieses Problem.
Obwohl Crypto.Random
explizit importiert wird , ist die einzige Abhängigkeit von Fabric paramiko , und pycrypto wird nirgendwo außer paramiko docs referenziert.
IMO wenn Sie pycrypto
Symbole explizit in Fabric importieren, sollte pycrypto
als Abhängigkeit innerhalb von setup.py
.
Vielen Dank!
Paramiko 2.0 wurde kürzlich veröffentlicht (und ich denke, es hängt von cryptography
und nicht von pycrypto
). Die Version 1.10.2 von setup.py schränkt die Version von paramiko nicht richtig ein, aber die Version 1.10.3 tut dies. Vielleicht hilft ein Upgrade auf 1.10.3.
Anscheinend wurde dies in c7d3034b5f217f2b4e7989f2c8e9bbea335be270 geändert
Kann bestätigen, dass das Anstoßen auf 1.11.1
dieses Problem behoben hat. Ich frage mich, warum 1.10.2
beschlossen hat, zu brechen...
@jamesob wurde dies durch die Neuinstallation von Fabric in einer neuen Umgebung ausgelöst? Wie @gtback bemerkte, hat sich Paramiko kürzlich geändert und wir haben frühere Fab-Releases herausgebracht, die an paramiko <2 hängen, um so etwas zu vermeiden. Sie waren nicht auf einer von denen, was wahrscheinlich der Grund ist, warum die Dinge kaputt gegangen sind.
Ich wusste jedoch nicht, dass wir Crypto direkt irgendwohin importierten; habe gerade nachgesehen und ja, wir mussten ein paar dumme Optimierungen vornehmen, um mit einer PyCrypto + Parallelisierungs-Eigenart umzugehen. Das wird sich ändern müssen, wenn wir den Pin der Paramiko-Version jemals rückgängig machen (was ich wahrscheinlich irgendwann tun möchte, sobald wir sicher sind, dass Paramiko 2 stabil ist). Also, danke fürs Auftauchen :)
Hilfreichster Kommentar
Paramiko 2.0 wurde kürzlich veröffentlicht (und ich denke, es hängt von
cryptography
und nicht vonpycrypto
). Die Version 1.10.2 von setup.py schränkt die Version von paramiko nicht richtig ein, aber die Version 1.10.3 tut dies. Vielleicht hilft ein Upgrade auf 1.10.3.Anscheinend wurde dies in c7d3034b5f217f2b4e7989f2c8e9bbea335be270 geändert