我正在使用一个python包(SloppyCell),它严重依赖于scipy和matplotlib中python绘图工具的使用。在这个软件中,他们多次使用了这些模块的功能,但没有指定它们来自哪个类。例如,他们使用了:
plot(traj.timepoints, result, 'k--', linewidth=3,zorder = 10)
给了我一个NameError。
我觉得这个函数应该是matplotlib的一部分。Pyplot,但是他们甚至没有导入matplotlib,只有scipy,这表明这个'plot'函数是scipy的一部分。我试图通过导入matplotlib稍微修改他们的模块。并以如下方式运行代码:
matplotlib.pyplot.plot(traj.timepoints, result, 'k--', linewidth=3,zorder = 10)
但我得到完全相同的'NameError:全局名称'plot'未定义'。这是更不寻常的(对我来说),因为当我在SloppyCell之外使用这个函数时,它工作得很好。
该软件显然适用于其他人,因为他们已经发表了使用该代码的论文。因此,直觉告诉我们,有一种方法可以让python解释器识别出这个(以及其他类似的函数),而无需在它来自的类的名称前加上前缀。有人知道这是否可能吗?或者,有没有人认为我遗漏了其他问题?
提前感谢。
在普通Python 2.7中,我可以这样做:
>>> from matplotlib import pyplot
>>> pyplot.plot
<function plot at 0xb4fe35a4>
在ipython --pylab
中我可以做
plot??
pyplot.plot??
表示pyplot
已通过名称和*
同时导入。numpy
(np
和*
)也是如此。
import numpy as np
允许访问所有numpy
子模块。但是对于scipy
,您可以选择性地导入它们(例如from scipy import sparse
)。我不熟悉matplotlib
,但它看起来像遵循scipy
模型。