Этот код не во всех средах 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
Я также думал, что это автоматический импорт, но если вы оставите скудный импорт, код не удастся. Так что это более тонко, чем это. – chthonicdaemon
@chthonicdaemon, если вы попробуете 'import sys; print (sorted (sys.modules.keys())) 'вы получаете все загруженные модули. Важно знать, что импорт не означает, что вы можете использовать его в интерпретаторе (потому что он был загружен в другое пространство/пространство имен), это просто означает, что он был загружен в любом месте. – MSeifert
Это становится ближе к ответу. Меня все еще интересует, почему/как код будет терпеть неудачу, если я не буду импортировать scipy, но преуспеть, если я это сделаю, но я не 'import scipy.integrate' – chthonicdaemon