2011-06-11 54 views
11

當我在我的項目中導入igraph包時,我得到一個AttributeError。這只是發生在項目目錄:如何在導入igraph時解決AttributeError?

[12:34][~]$ python2 
Python 2.7.1 (r271:86832, Apr 15 2011, 12:09:10) 
[GCC 4.5.2 20110127 (prerelease)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import igraph 
>>> 

[12:34][~]$ cd projectdir/ 
[12:34][projectdir]$ python2 
Python 2.7.1 (r271:86832, Apr 15 2011, 12:09:10) 
[GCC 4.5.2 20110127 (prerelease)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import igraph 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/site-packages/igraph/__init__.py", line 42, in <module> 
    import gzip 
    File "/usr/lib/python2.7/gzip.py", line 36, in <module> 
    class GzipFile(io.BufferedIOBase): 
AttributeError: 'module' object has no attribute 'BufferedIOBase' 
>>> 

有一個在項目目錄中沒有文件igraph.py:

[12:34][projectdir]$ ls -alR | grep igraph | wc -l 
0 

而且沒有圓形進口。

我該如何解決這個錯誤?

回答

27

最有可能的是,~/projectdir中有一個模塊io或項目配置的路徑之一。由igraph導入的gzip模塊以

import io 

開頭,期望內置io模塊,而不是您的項目的模塊。查找io目錄或io.pyio.pyc。對於可能包含名爲io的模塊的任何其他目錄(可能在~/projectdir之外),還可以幫助詳細檢查sys.path

+3

謝謝。我的項目中有一個'io'軟件包。下次我知道如何解決這個問題。 – any1 2011-06-11 11:05:57

+2

這就是原因......解決方案是什麼?看起來很明顯的解決方案是重命名項目中的'io'包,但是那裏有另一個不需要重命名io包的解決方案嗎? – jmetz 2013-01-16 13:07:45

+2

@mutzmatron離開你自定義的'io'是一個麻煩的祕訣,所以你應該真的重命名它。當你*可以*暫時修改'sys.path'時,這是非常脆弱的。在任何情況下,您都應該使用絕對導入,比如'import myproject.div.io_utils' – phihag 2013-01-16 13:13:34

相關問題