Hola,
Tengo un proyecto privado que depende de la tela. Específicamente, fijamos fabric==1.10.2
.
Hoy, las compilaciones de este proyecto han comenzado a fallar misteriosamente con el siguiente seguimiento de pila:
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
La tela ha estado sujeta a la misma versión durante semanas. La instalación manual de pycrypto
junto con la tela resuelve este problema.
A pesar de importar explícitamente Crypto.Random
, la única dependencia de fabric es no se hace referencia a pycrypto en
En mi opinión, si está importando símbolos pycrypto
explícitamente dentro de la tela, pycrypto
debe citarse como una dependencia dentro de setup.py
.
¡Gracias!
Paramiko 2.0 se lanzó recientemente (y creo que depende de cryptography
lugar de pycrypto
). La versión 1.10.2 de setup.py no restringe adecuadamente la versión de paramiko, pero la versión 1.10.3 sí. Quizás la actualización a la versión 1.10.3 ayude.
Parece que esto se cambió en c7d3034b5f217f2b4e7989f2c8e9bbea335be270
Puede confirmar que subir a 1.11.1
ha solucionado este problema. Me pregunto por qué 1.10.2
decidió romper hoy ...
@jamesob, ¿ se desencadenó esto al reinstalar Fabric en un nuevo entorno? Como señaló @gtback , paramiko cambió recientemente y publicamos versiones anteriores de Fab que pin a paramiko <2 para evitar este tipo de cosas. No estabas en uno de esos, lo que probablemente sea la razón por la que se rompieron las cosas.
Dicho esto, no me di cuenta de que estábamos importando Crypto directamente en cualquier lugar; Solo miré y sí, tuvimos que hacer algunos ajustes tontos para lidiar con una peculiaridad de paralelización de PyCrypto +. Eso tendrá que cambiar si alguna vez deshacemos el pin de la versión de Paramiko (lo que probablemente me gustaría hacer en algún momento, una vez que estemos seguros de que paramiko 2 es estable). Entonces, gracias por sacar a la luz esto :)
Comentario más útil
Paramiko 2.0 se lanzó recientemente (y creo que depende de
cryptography
lugar depycrypto
). La versión 1.10.2 de setup.py no restringe adecuadamente la versión de paramiko, pero la versión 1.10.3 sí. Quizás la actualización a la versión 1.10.3 ayude.Parece que esto se cambió en c7d3034b5f217f2b4e7989f2c8e9bbea335be270