你好呀,
我有一个依赖于结构的私人项目。 具体来说,我们固定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
的依赖项引用。
谢谢!
可以确认撞到1.11.1
已经解决了这个问题。 想知道为什么1.10.2
今天决定休息...
@jamesob这是在新环境中重新安装 Fabric 触发的吗? 正如@gtback 所指出的,paramiko 最近发生了变化,我们发布了较早的 Fab 版本,该版本将 pin 连接到 paramiko<2 以避免这种情况。 你不在其中之一,这可能是事情破裂的原因。
也就是说,我没有意识到我们在任何地方直接导入 Crypto; 只是看了看,是的,我们不得不做一些愚蠢的调整来处理 PyCrypto + 并行化的怪癖。 如果我们撤销 Paramiko 版本的 pin(一旦我们确定 paramiko 2 稳定,我可能会在某个时候这样做),这将不得不改变。 所以,感谢你浮出水面:)
最有用的评论
Paramiko 2.0 最近发布(我认为取决于
cryptography
而不是pycrypto
)。 setup.py的1.10.3 版本可以。 也许升级到 1.10.3 会有所帮助。看起来这在 c7d3034b5f217f2b4e7989f2c8e9bbea335be270 中有所改变