在导入scipy后,在脚本中使用scipy.stats时出现错误。
AttributeError: 'module' object has no attribute 'stats'
在脚本编辑器中,我可以在输入scipy后单击“stats”下拉菜单,在Python控制台中,我无法从下拉菜单中选择python.stats,它不在那里。我正在使用pandas 2.7和SciPy 0.13.0。为什么会这样?有任何已知问题吗?
在导入scipy后,在脚本中使用scipy.stats时出现错误。
AttributeError: 'module' object has no attribute 'stats'
在脚本编辑器中,我可以在输入scipy后单击“stats”下拉菜单,在Python控制台中,我无法从下拉菜单中选择python.stats,它不在那里。我正在使用pandas 2.7和SciPy 0.13.0。为什么会这样?有任何已知问题吗?
扩展我的评论(以列出答案)。
像许多其他大包一样,Scipy不会自动导入所有模块。如果我们想使用Scipy的子包,则需要直接导入它们。
但是,有些Scipy子包会加载其他Scipy子包,因此例如导入scipy.stats也会导入大量其他包。但我从不依赖于这一点来使子包在名称空间中可用。
在许多使用Scipy的软件包中,首选模式是导入子软件包以通过其名称使其可用,例如:
>>> from scipy import stats, optimize, interpolate
>>> import scipy
>>> scipy.stats
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'stats'
>>> scipy.optimize
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'optimize'
>>> import scipy.stats
>>> scipy.optimize
<module 'scipy.optimize' from 'C:\Python26\lib\site-packages\scipy\optimize\__init__.pyc'>
import scipy
然后你使用:
scipy.stats
你将会获得:
AttributeError: module 'scipy' has no attribute 'stats'
你需要像这样导入:
import scipy.stats
或者
import scipy
import stats
from scipy import stats
或者import scipy.stats
。需要注意的是,使用import scipy
并不能导入stats子模块,但是你的编辑器可能会自动为了TAB键自动导入它。 - Josefpython -c "import scipy.stats"
是否会出现错误?同时,请展示生成错误的代码以及导入scipy.stats的代码。 - Warren Weckesser