Python rcParams错误

时间:2015-09-01 17:16:39

标签: python matplotlib anaconda

我安装了Anaconda和MacPorts来安装各种python包,并在尝试导入matplotlib时收到以下错误:

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

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

1 个答案:

答案 0 :(得分:7)

问题是由当前目录中的文件bisect.py引起的,该文件隐藏了bisect module from the standard library:当您导入matplotlib时,matplotlib会导入urllib2库,而后者又会尝试导入标准库 bisect模块。不幸的是,由于Python导入名称解析的工作方式,urllib2最终会导入本地 bisect.py,而不是标准库。

请注意,此时(开始导入bisect.py的点)我们仍然只是matplotlib导入的一半,因为matplotlib导入在导入完成后才能完成{{1 }},在urllib2导入完成之前,无法完成。这意味着只定义了matplotlib导入定义的一些对象。

现在你的bisect.py脚本显然试图从matplotlib中进行更多的导入,并且因为matplotlib命名空间尚未完全填充,你以bisect.py结尾。

可能的解决方案:(1)将您的ImportError脚本重命名为其他内容; (2)从不同的目录(不包含bisect.py脚本的目录)启动Python解释器。

通常,建议避免提供与标准库中某些内容匹配的自己的模块或顶级包名称。而不是必须具有标准库中的内容的百科全书知识,最简单的方法是避免过于通用的名称。 bisect.pynumbers.pymath.py可能是最常见的违规者。

要在将来诊断此类错误,请注意以下行:

random.py
回溯中的

:所有其他行显示File "bisect.py", line 2, in <module> 内的模块,因此来自标准库或来自/Users/colinross/anaconda/lib/python2.7中安装的第三方软件包(如matplotlib);缺少路径表明正在从当前目录导入/Users/colinross/anaconda/lib/python2.7/site-packages