尝试从pyplot
导入模块matplotlib
时,我发现了一种非常奇怪的行为。首先它说它不存在,但是在导入pylab
(另一个matplotlib
模块)之后,它突然起作用了!
>>> import matplotlib
>>> matplotlib.__version__
'1.2.1'
>>> matplotlib.pyplot
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'pyplot'
>>> import pylab
>>> matplotlib.pyplot
<module 'matplotlib.pyplot' from '/Library/Python/2.7/site-packages/matplotlib/pyplot.pyc'>
其他人在他/她的电脑中有这种行为吗?
** 这发生在运行Python 2.7的OS X Mountain Lion上。我使用matplotlib
安装了pip
。
答案 0 :(得分:4)
通常,要访问包中的模块,必须导入该模块。您不能只导入包并使用点语法访问模块。如果你真的喜欢打字点,只需from matplotlib import pyplot
(或import matplotlib.pyplot
。)
导入pylab
后它起作用的原因是pylab
导入pyplot
,之后pyplot
可用作封闭包matplotlib
的属性。
基本上,如果你import package
,你就不能指望你能package.module
。import package
。但是,如果您执行from package import module
和 package.module
,那么您可以执行{{1}}。