Python import paramiko error “cannot import name util”
我已经安装了Paramiko模块。但是,当我尝试导入该模块时。我有以下错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import paramiko --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-42-e77d47aa6e4a> in <module>() ----> 1 import paramiko C:\Anaconda\lib\site-packages\paramiko\__init__.py in <module>() 28 29 ---> 30 from paramiko.transport import SecurityOptions, Transport 31 from paramiko.client import SSHClient, MissingHostKeyPolicy, AutoAddPolicy, RejectPolicy, WarningPolicy 32 from paramiko.auth_handler import AuthHandler C:\Anaconda\lib\site-packages\paramiko\transport.py in <module>() 30 31 import paramiko ---> 32 from paramiko import util 33 from paramiko.auth_handler import AuthHandler 34 from paramiko.ssh_gss import GSSAuth ImportError: cannot import name util |
有人知道如何解决这个问题吗?
我自己也遇到过同样的问题(python 2.7.6),在这里碰到了这个答案。importError:无法导入问题注释中引用的名称x,这表明它是循环依赖性问题。
在没有找到任何优雅的解决方案后,我发现自己在
- 注释/删除行
from paramiko import util - 将每次出现的
util 替换为paramiko.util 。 - 更换时要小心:不要更换现有的EDOCX1[3]
- 注释/删除paramiko import util中的行
- 将每次出现的util(在此文件中)替换为paramiko.util
- 替换时要小心:不要替换现有的paramiko.util
小精灵
这解决了我的问题,让我有些困惑:一方面,修改import方法似乎可以解决这个问题,但另一方面,python处理它的方式就像……99%的病例….很尴尬。
尝试重新安装。在我的例子中,它是有效的。
1 2 | pip uninstall paramiko pip install paramiko --upgrade |
我们只需将导入行编辑为:
1 | from . import util |
所以我们不必每次都改变。
奇怪的是,在Paramiko 2.4中修复了这个问题之后,我又出现了一个导入错误,即:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | > python Python 2.7.5 (default, Aug 4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2 Type"help","copyright","credits" or"license" for more information. >>> import paramiko Traceback (most recent call last): File"<stdin>", line 1, in <module> File"/usr/lib/python2.7/site-packages/paramiko/__init__.py", line 22, in <module> from paramiko.transport import SecurityOptions, Transport File"/usr/lib/python2.7/site-packages/paramiko/transport.py", line 38, in <module> from paramiko.auth_handler import AuthHandler File"/usr/lib/python2.7/site-packages/paramiko/auth_handler.py", line 48, in <module> from paramiko.ssh_gss import GSSAuth, GSS_EXCEPTIONS File"/usr/lib/python2.7/site-packages/paramiko/ssh_gss.py", line 54, in <module> GSS_EXCEPTIONS = (gssapi.GSSException,) AttributeError: 'module' object has no attribute 'GSSException' |
号
原来我安装了
这是一个帕拉米科(1069)的问题。但在用于python 2.7的paramiko 2.4中没有修复。已经报告了。
要添加到Kludge的答案中,我们需要在以下每个文件中用paramiko.util替换"util":transport.py、dsskey.py、ber.py、pkey.py、kex-gex.py、kex-group1.py、kex-gss.py、packet.py、primes.py、sftp-client.py、sftp.py、sftp-server.py。
引用Kludge的方法以获得更好的清晰度:
小精灵
我的方法是从这里下载python-utils https://pypi.org/project/utils/文件,pip install-utils-0.9.0-py2.py3-none-any.whl,问题已经解决了。我认为真正的原因是没有lib-utils。