importTerror:无法导入名称“factorial”

2024-06-16 10:18:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用logit模型并尝试导入statsmodels库。 我的版本:Python 3.6.8

我得到的最好的建议是将scipy降级,但不清楚该如何降级以及降级到什么版本。请帮忙解决。 https://github.com/statsmodels/statsmodels/issues/5747

import statsmodels.formula.api as smf

ImportError                               Traceback (most recent call last)
<ipython-input-52-f897a2d817de> in <module>
----> 1 import statsmodels.formula.api as smf

~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/formula/api.py in <module>
     13 from statsmodels.robust.robust_linear_model import RLM
     14 rlm = RLM.from_formula
---> 15 from statsmodels.discrete.discrete_model import MNLogit
     16 mnlogit = MNLogit.from_formula
     17 from statsmodels.discrete.discrete_model import Logit

~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/discrete/discrete_model.py in <module>
     43 
     44 from statsmodels.base.l1_slsqp import fit_l1_slsqp
---> 45 from statsmodels.distributions import genpoisson_p
     46 
     47 try:

~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/distributions/__init__.py in <module>
      1 from .empirical_distribution import ECDF, monotone_fn_inverter, StepFunction
----> 2 from .edgeworth import ExpandedNormal
      3 from .discrete import genpoisson_p, zipoisson, zigenpoisson, zinegbin

~/anaconda3/envs/py36/lib/python3.6/site-packages/statsmodels/distributions/edgeworth.py in <module>
      5 import numpy as np
      6 from numpy.polynomial.hermite_e import HermiteE
----> 7 from scipy.misc import factorial
      8 from scipy.stats import rv_continuous
      9 import scipy.special as special

ImportError: cannot import name 'factorial'```

Tags: infromimportlibpackagesassitescipy
3条回答
!pip install scipy==1.2  --user
import statsmodels.formula.api as sm
from statsmodels.formula.api import ols
from statsmodels.sandbox.regression.predstd import wls_prediction_std`

在成功安装scipy 1.2之后,我仍然得到了以下结果:

importTerror:无法从'scipy.misc'导入名称'factorial'

谢谢致电9769953。

  1. pip3 uninstall statsmodels确保删除旧版本
  2. pip3 install statsmodels==0.10.0rc2 --pre --user安装statsmodels的候选发行版
  3. 重新启动jupyter笔记本的内核

帮我修好了。
您可以使用pip3 list检查您的版本

摘要:在终端中复制并运行以下内容:

pip3 uninstall statsmodels -y
pip3 install statsmodels==0.10.0rc2 --pre --user

别忘了重新启动jupyter笔记本的内核:)

this issue on statsmodels' github repo开始,解决方案似乎是将SciPy降级到1.2版本(当前版本是1.3,您似乎正在使用它)。
至少对我来说,SciPy 1.2在scipy.misc包中有factorial函数。

你可以的

python3.6 -m pip install scipy==1.2 --upgrade

如果您没有标准安装权限,请使用--user选项。

也许你想避免使用pip,因为你使用的是Conda。您也应该能够在Conda中锁定scipy的版本,但是如果您不打算向环境中添加任何其他包,只需使用pip版本即可。
当然,降低SciPy的级别可能会在其他地方引起问题,但这很难预见,尤其是在不知道您安装了哪些其他包和依赖项的情况下;您只需找出答案。为没有在依赖地狱结束而祈祷(因为你已经在门口了)。


更奇怪的是,scipy.misc.factorial已经被弃用,因为1.0版应该使用scipy.special.factorial

但是,在版本1.2中导入不会显示任何明显的警告,也不会使用它。这可能解释了为什么statsmodels仍然使用旧导入。下一个statsmodels版本的修复正在进行中。

相关问题 更多 >