Fabric: 导入错误:没有名为 Crypto 的模块

创建于 2016-04-29  ·  3评论  ·  资料来源: fabric/fabric

你好呀,

我有一个依赖于结构的私人项目。 具体来说,我们固定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

Fabric 已被固定到同一版本数周。 手动安装pycrypto和 Fabric 可以解决这个问题。

尽管明确导入Crypto.Random ,fabric 唯一的依赖项是paramiko ,并且除了 paramiko 文档之外没有引用pycrypto 。

IMO 如果您在结构中显式导入pycrypto符号,则pycrypto应作为setup.py的依赖项引用。

谢谢!

最有用的评论

Paramiko 2.0 最近发布(我认为取决于cryptography而不是pycrypto )。 setup.py1.10.3 版本可以。 也许升级到 1.10.3 会有所帮助。

看起来这在 c7d3034b5f217f2b4e7989f2c8e9bbea335be270 中有所改变

所有3条评论

Paramiko 2.0 最近发布(我认为取决于cryptography而不是pycrypto )。 setup.py1.10.3 版本可以。 也许升级到 1.10.3 会有所帮助。

看起来这在 c7d3034b5f217f2b4e7989f2c8e9bbea335be270 中有所改变

可以确认撞到1.11.1已经解决了这个问题。 想知道为什么1.10.2今天决定休息...

@jamesob这是在新环境中重新安装 Fabric 触发的吗? 正如@gtback 所指出的,paramiko 最近发生了变化,我们发布了较早的 Fab 版本,该版本将 pin 连接到 paramiko<2 以避免这种情况。 你不在其中之一,这可能是事情破裂的原因。

也就是说,我没有意识到我们在任何地方直接导入 Crypto; 只是看了看,是的,我们不得不做一些愚蠢的调整来处理 PyCrypto + 并行化的怪癖。 如果我们撤销 Paramiko 版本的 pin(一旦我们确定 paramiko 2 稳定,我可能会在某个时候这样做),这将不得不改变。 所以,感谢你浮出水面:)

此页面是否有帮助?
0 / 5 - 0 等级