的自動進口這段代碼在我擁有所有的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