Python rcParams 错误
Python rcParams error
我已经安装了 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
有谁知道如何解决这个问题?
问题是由您当前目录中的文件 bisect.py
引起的,该文件隐藏了 bisect
module from the standard library:当您导入 matplotlib 时,matplotlib 会导入 urllib2
库,后者会尝试导入 标准库 bisect
模块。不幸的是,由于 Python 的导入名称解析的工作方式,urllib2
最终导入了您的 local 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.py
和 random.py
可能是最常见的违规者。
为了将来诊断此类错误,请注意以下行:
File "bisect.py", line 2, in <module>
在回溯中:所有其他行都显示 /Users/colinross/anaconda/lib/python2.7
中的模块,因此来自标准库或安装在 /Users/colinross/anaconda/lib/python2.7/site-packages
中的第三方包(如 matplotlib);缺少路径表明 bisect.py
正在从当前目录导入。
我已经安装了 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
有谁知道如何解决这个问题?
问题是由您当前目录中的文件 bisect.py
引起的,该文件隐藏了 bisect
module from the standard library:当您导入 matplotlib 时,matplotlib 会导入 urllib2
库,后者会尝试导入 标准库 bisect
模块。不幸的是,由于 Python 的导入名称解析的工作方式,urllib2
最终导入了您的 local 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.py
和 random.py
可能是最常见的违规者。
为了将来诊断此类错误,请注意以下行:
File "bisect.py", line 2, in <module>
在回溯中:所有其他行都显示 /Users/colinross/anaconda/lib/python2.7
中的模块,因此来自标准库或安装在 /Users/colinross/anaconda/lib/python2.7/site-packages
中的第三方包(如 matplotlib);缺少路径表明 bisect.py
正在从当前目录导入。