的自动进口这段代码在我拥有所有的Python环境中失败,但不是在Spyder的:Spyder的子模块
import scipy
print(scipy.integrate.cumtrapz([1, 2, 3]))
在大多数环境中,你会得到
AttributeError: module 'scipy' has no attribute 'integrate'
,除非你做了import scipy.integrate
得到子模块进口,但不知何故,在Spyder的这段代码运行没有错误,如果您使用运行配置中的“在当前的Python或IPython的控制台执行”。如果您使用“在新的专用Python控制台中执行”,它会失败。显然,Spyder正在做一些自动导入子模块的工作,但我无法在任何地方找到这种行为。
问题是什么是Spyder在做什么,这是在哪里记录,如何关闭它。
环境:蟒蛇3(4.3.0),Spyder的3.1.2,Python的3.5
我还以为是自动进口,但如果你离开了SciPy的进口,代码失败。所以比这更微妙。 – chthonicdaemon
@chthonicdaemon如果你尝试'import sys;打印(排序(sys.modules.keys()))'你得到所有加载的模块。重要的是要知道,进口并不意味着你可以在解释使用它(因为它是在其他范围/命名空间加载),它只是意味着它在任何位置加载是非常重要的。 – MSeifert
那接近答案了。我在仍然有兴趣,为什么/如何,如果我不'进口scipy'代码会失败,但如果我这样做会成功,但我不'进口scipy.integrate' – chthonicdaemon