2015-03-31 215 views
9

我已經安裝了paramiko模塊。但是,當我試圖導入該模塊。我得到了以下錯誤。Python導入paramiko錯誤「無法導入名稱util」

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 

有誰知道如何解決這個問題?

+0

你用哪個命令來安裝paramiko? – narendranathjoshi 2015-10-26 09:35:53

+0

有沒有人知道這一點? – firebait 2016-08-02 15:30:58

+1

剛剛在Linux安裝中檢查,並且/usr/lib/python2.7/dist-packages/paramiko/transport.py具有相同的行(但在33)。這個「無法導入名稱」的錯誤通常涉及到循環依賴的導入,但paramiko通常不會自己出現這個問題(參見http://stackoverflow.com/questions/9252543/importerror-cannot-import-name-x例如)。哪個版本的python?你是否在你的例子之前輸入了其他東西? – 2016-08-08 06:32:04

回答

1

我自己也有同樣的問題(python 2.7.6),並在這裏遇到這個問題的答案 ImportError: Cannot import name X,這在問題的評論中提到,表明這是一個循環依賴問題。

沒有找到任何優雅的解決方案之後,我發現自己編輯的paramiko的源代碼在site-packages/paramiko/transport.py

  • 評論/刪除行from paramiko import util
  • 更換的util所有出現(在這個文件)paramiko.util
  • 替換時請小心:請勿替換現有的出現paramiko.util

這已經解決了我的問題,讓我有點困惑:一方面,修改導入方法似乎解決了這個問題,但另一方面,Python在99%的情況下處理它。 ?尷尬。

0

所以我們只需要導入行是:

from . import util 

所以我們不必改變每發生。

奇怪的是,在2.4的paramiko修復此之後,我還有一個導入錯誤,那就是:

> 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。已經報道過。

相關問題