Я использую scipy и numpy через дистрибутив Anaconda 2.1.0. Я использую Spyder как мою среду разработки Python.Различия в импорте модулей/подпакетов numpy и пакетов Scipy
Когда я бег import scipy as sp
, я не могу получить доступ к подпакетам, например, оптимизирует, linalg, кластер и т.д. через sp.
Однако, когда я бег import numpy as np
, я в состоянии получить доступ ко всем его подпакетам, такие как linalg, random, matrixlib, полином, тестирование и т. д. до np
.
Есть ли причина, по которой два импорта работают по-разному? Почему import scipy as sp
не захватывает все scipy subpackages в пространство имен sp
?
Это действительно интересный вопрос. Забавно: после того, как 'import scipy as sp' напечатал' sp.optimize', вы получите сообщение об ошибке. Но если вы делаете «от scipy import optimize», внезапно «sp.optimize» больше не даст вам ошибки. Эта проблема не относится к анаконде. – cel
@cel, вы больше не получаете ошибку, потому что, когда вы печатаете 'from scipy import optimize', интерпретатор понимает, что он уже загрузил основной пакет' scipy', и он будет импортировать подмодуль 'optimize' внутри уже загруженный модуль. Идентификатор 'sp' указывает на тот же самый модуль, что и раньше, теперь обновляется, так что теперь вы можете получить доступ к подмодулю' optimize' через идентификатор. – gg349
@ gg349, о, что имеет смысл - не знал, что :) – cel