Почему у matplotlib нет атрибута «pylab»? - PullRequest
4 голосов
/ 18 апреля 2011

Я импортировал matplotlib следующим образом:

import matplotlib as mpl

Ошибка о том, что объект 'module' не имеет атрибута 'pylab' , была выброшена при запуске следующегокод:

x = np.arange(0,10,0.01)   # import numpy as np
y = np.sin(x)
mpl.pylab.plot(x,y)
mpl.pylab.show()

И при импорте matplotlib по-другому не было ошибок:

import matplotlib.pylab as pl

Кто-нибудь знает, что случилось?

Ответы [ 3 ]

10 голосов
/ 18 апреля 2011

Для построения графика в неинтерактивном режиме вы должны использовать модуль pyplot, а не pylab.

from matplotlib import pyplot
import numpy

pyplot.plot(range(1,100), numpy.sin(range(1,100)))
pyplot.show()

Модуль pylab обычно используется не как подмодуль matplotlib, а как модуль верхнего уровня. Обычно он используется в интерактивном режиме для объединения нескольких частей numpy, scipy и matplotlib в одно пространство имен.

>>> from pylab import *
>>> plot(range(1,100), sin(range(1,100)))
>>> show()
5 голосов
/ 18 апреля 2011

Подмодули не всегда импортируются по умолчанию.Вы можете импортировать pylab с помощью

import matplotlib as mpl
import matplotlib.pylab  # Loads the pylab submodule as well
# mpl.pylab is now defined

. Именно поэтому выполнение import matplotlib.pylab as pl решило проблему для вас.

Не импортирование субмодулей по умолчанию приводит к более быстрому времени загрузки.Он также не загрязняет пространство имен основного модуля неиспользуемыми именами подмодулей.Создатель модуля может определить, какие подмодули загружаются по умолчанию (поскольку pylab довольно тяжелый, по умолчанию он не импортируется matplotlib).

0 голосов
/ 18 апреля 2011

Обычно вы получаете эту ошибку, если модуль, который вы пытаетесь импортировать, не имеет файла __init__.py. Я также получаю эту ошибку при моей установке. Я думаю, вы просто должны признать, что вы должны импортировать matplotlib.pylab отдельно от matplotlib.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...