Python导入paramiko错误“无法导入名称util”

时间:2015-03-31 20:45:33

标签: python importerror paramiko

我已经安装了paramiko模块。但是,当我尝试导入该模块时。我收到了以下错误。

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

有谁知道如何解决这个问题?

5 个答案:

答案 0 :(得分:2)

我自己也遇到了同样的问题(python 2.7.6),并在这里遇到了这个问题 ImportError: Cannot import name X,在问题的评论中提到,表明它是一个循环依赖问题。

在找不到任何优雅的解决方案后,我发现自己编辑了 1 !tesseract im.tif imTif 2 >> tesseract: /usr/local/MATLAB/R2016b/bin/glnxa64/libtiff.so.5: no version information available (required by /usr/lib/liblept.so.5) 3 >> tesseract: symbol lookup error: tesseract: undefined symbol: _ZN9tesseract19TessBoxTextRendererC1EPKc 中的paramiko源代码:

  • 评论/删除第site-packages/paramiko/transport.py
  • from paramiko import util的每次出现(在此文件中)替换为util
  • 替换时要小心:不要替换现有的paramiko.util

这解决了我的问题,让我感到有些困惑:一方面,修改导入方法似乎解决了这个问题,但另一方面,Python处理它就像... 99%的情况。 。?别扭。

答案 1 :(得分:1)

我们可以将导入行编辑为:

from . import util

所以我们不必每次都改变。

奇怪的是,在paramiko 2.4中修复后,我有另一个导入错误,即:

> 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'

事实证明,我已经以某种方式安装了cyrus-sasl-gssapi,其中包含模块gssapi但没有GSSException。所以python很困惑。我删除了包裹,一切都很好。如果您有python-gssapi,请务必将其删除。

这是paramiko(#1069)的问题。但是在Python 2.7的paramiko 2.4中没有修复。有报道。

答案 2 :(得分:1)

尝试重新安装它。就我而言,它有效。

pip uninstall paramiko
pip install paramiko --upgrade

答案 3 :(得分:0)

我的方法是从这里下载python utils https://pypi.org/project/utils/#files,并且pip install utils-0.9.0-py2.py3-none-any.whl,问题已经解决。我认为真正的原因是没有lib utils。

答案 4 :(得分:0)

仅需添加到Kludge的答案中,我们将需要在以下每个文件中将“ util”替换为paramiko.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的方法以提高清晰度:

  • 注释/删除paramiko import util中的行
  • 将每次出现的util(在此文件中)替换为paramiko.util
  • 替换时要小心:不要替换出现的paramiko.util