Fabric: ImportError: Nenhum módulo denominado Crypto

Criado em 29 abr. 2016  ·  3Comentários  ·  Fonte: fabric/fabric

Olá,

Tenho um projeto privado que depende de tecido. Especificamente, fixamos fabric==1.10.2 .

Hoje, as compilações deste projeto começaram a falhar misteriosamente com o seguinte rastreamento de pilha:

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

O tecido está preso à mesma versão há semanas. A instalação manual de pycrypto ao lado do tecido resolve esse problema.

Apesar de importar explicitamente Crypto.Random , a única dependência do fabric é não é referenciado em nenhum lugar além dos documentos paramiko.

IMO se você estiver importando símbolos pycrypto explicitamente dentro do fabric, pycrypto deve ser citado como uma dependência dentro de setup.py .

Obrigado!

Comentários muito úteis

Paramiko 2.0 foi lançado recentemente (e acho que depende de cryptography vez de pycrypto ). A versão 1.10.2 do setup.py não restringe adequadamente a versão do paramiko, mas a versão 1.10.3 sim. Talvez a atualização para 1.10.3 ajude.

Parece que isso foi alterado em c7d3034b5f217f2b4e7989f2c8e9bbea335be270

Todos 3 comentários

Paramiko 2.0 foi lançado recentemente (e acho que depende de cryptography vez de pycrypto ). A versão 1.10.2 do setup.py não restringe adequadamente a versão do paramiko, mas a versão 1.10.3 sim. Talvez a atualização para 1.10.3 ajude.

Parece que isso foi alterado em c7d3034b5f217f2b4e7989f2c8e9bbea335be270

Posso confirmar que o salto para 1.11.1 corrigiu o problema. Me pergunto por que 1.10.2 decidiu quebrar hoje ...

@jamesob isso foi acionado pela reinstalação do Fabric em um novo ambiente? Como @gtback observou, o paramiko mudou recentemente e lançamos versões anteriores do Fab que prendem o paramiko <2 para evitar esse tipo de coisa. Você não estava em um desses, e é provavelmente por isso que as coisas quebraram.

Dito isso, eu não sabia que estávamos importando Crypto diretamente para qualquer lugar; apenas olhei e sim, tivemos que fazer alguns ajustes idiotas para lidar com uma peculiaridade de paralelização do PyCrypto +. Isso terá que mudar se alguma vez desfizermos o pin da versão Paramiko (o que eu provavelmente gostaria de fazer em algum momento, uma vez que tivermos certeza de que o paramiko 2 está estável). Então, obrigado por trazer isso à tona :)

Esta página foi útil?
0 / 5 - 0 avaliações