2015-09-01 42 views
2

我已經安裝了蟒蛇和MacPorts的當我嘗試導入安裝各種Python包,並收到以下錯誤matplotlib:Python的rcParams錯誤

bash-3.2$ python 
Python 2.7.8 |Anaconda 2.1.0 (x86_64)| (default, Aug 21 2014, 15:21:46) 
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
Anaconda is brought to you by Continuum Analytics. 
Please check out: http://continuum.io/thanks and https://binstar.org 
>>> import conda 
>>> import matplotlib 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/colinross/anaconda/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-macosx-10.5-x86_64.egg/matplotlib/__init__.py", line 169, in <module> 
    from urllib2 import urlopen 
    File "/Users/colinross/anaconda/lib/python2.7/urllib2.py", line 104, in <module> 
    import bisect 
    File "bisect.py", line 2, in <module> 
    import matplotlib.pyplot as plt 
    File "/Users/colinross/anaconda/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-macosx-10.5-x86_64.egg/matplotlib/pyplot.py", line 27, in <module> 
    import matplotlib.colorbar 
    File "/Users/colinross/anaconda/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-macosx-10.5-x86_64.egg/matplotlib/colorbar.py", line 32, in <module> 
    import matplotlib.artist as martist 
    File "/Users/colinross/anaconda/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-macosx-10.5-x86_64.egg/matplotlib/artist.py", line 11, in <module> 
    from matplotlib import docstring, rcParams 
ImportError: cannot import name rcParams 

有誰知道如何解決這一問題?當您導入matplotlib,matplotlib進口urllib2庫,這反過來又試圖導入標準庫bisect模塊:

+2

它看起來好像你有一個你自己稱爲'bisect.py'的模塊;這是標準庫的「平分」模塊的陰影。重命名你的'bisect.py'模塊並重試。 –

+0

謝謝!這工作。現在我收到一個新的錯誤。 ImportError:dlopen(/Users/colinross/anaconda/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-macosx-10.5-x86_64.egg/matplotlib/ft2font.so,2):Library not加載:libfreetype.6.dylib 引用自:/Users/colinross/anaconda/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-macosx-10.5-x86_64.egg/matplotlib/ft2font。 so 原因是:image not found – user3711780

+0

這是一個完全不同的問題,可能是conda的人之一:解決方案將取決於你如何安裝matplotlib及其依賴項(如freetype)。 –

回答

3

問題是由一個文件bisect.py當前目錄中,其中陰影的bisect module from the standard library引起的。不幸的是,由於Python的導入名稱解析工作方式,urllib2最終導入了您的本地bisect.py而不是標準庫。

注意,在這一點上(從哪裏進口的bisect.py開始點),我們還是隻有一半儘管matplotlib進口,因爲進口matplotlib無法完成,直到它完成導入urllib2,這反過來又可以直到bisect.py導入完成才能完成。這意味着只有matplotlib導入定義的一些對象已被定義。

現在您的bisect.py腳本顯然會嘗試從matplotlib進行更多的導入操作,並且由於matplotlib命名空間尚未完全填充,所以您以ImportError結尾。

可能的解決方案:(1)將您的bisect.py腳本重命名爲其他內容; (2)從其他目錄(不包含您的bisect.py腳本)啓動Python解釋器。

一般來說,建議是避免給自己的模塊或頂級包名稱與標準庫中的某些名稱匹配。而不是必須擁有關於標準庫中的內容的百科全書知識,最簡單的方法是避免名稱過於通用。 numbers.py,math.pyrandom.py可能是最常見的罪犯。

爲了將來在診斷這種錯誤,請注意行:

File "bisect.py", line 2, in <module> 

在回溯:所有其他線顯示內/Users/colinross/anaconda/lib/python2.7一個模塊,所以從標準庫或三階未來第三方包(如matplotlib)安裝在/Users/colinross/anaconda/lib/python2.7/site-packages;缺少路徑顯示bisect.py正在從當前目錄導入。