我在导入scipy.special软件包时遇到问题。这不是有害的,只是令人讨厌/有趣。
scipy.special
当我使用导入scipyimport scipy as sp并尝试访问时,sp.special我得到:
import scipy as sp
sp.special
>>> import scipy as sp >>> sp.special Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'module' object has no attribute 'special' >>>
但是如果import scipy.special可以的话,我可以通过scipy.special和访问特殊模块sp.special:
import scipy.special
>>> import scipy as sp >>> import scipy.special >>> scipy.special <module 'scipy.special' from 'C:\Python27\lib\site-packages\scipy\special\__init__.pyc'> >>> sp.special <module 'scipy.special' from 'C:\Python27\lib\site-packages\scipy\special\__init__.pyc'> >>>
现在,我special可以通过sp和scipy名称空间访问该模块。有趣的是,我可以通过scipy名称空间访问scipy的其余部分。
special
sp
scipy
第一个问题:为什么special模块不第一次导入?
第二个问题:如何special在sp不定义scipy名称空间的情况下仅通过名称空间访问模块?
编辑:使用Python 2.7.2和scipy 0.10.1
默认情况下,“ import scipy”不导入任何子包。具有大型Fortran扩展模块的子软件包太多,加载速度很慢。我不建议这样做import scipy或简称import scipy as sp。只是不是很有用。使用from scipy import special,from scipy import linalg等等。
import scipy
from scipy import special
from scipy import linalg