Scipy 1.14.1导致Statsmodels 0.14.2运行失败,求解决方案
Scipy 1.14.1环境下Python程序报错的解决方法
安装Scipy 1.14.1后,原本可正常运行的Python程序出现故障,回退至1.14.0后报错消失。以下是问题详情及解决方案:
最小复现示例(MRE)
import pandas as pd import plotly.express as px if __name__ == "__main__": data = { "Date": [0, 7, 14, 21, 28], "Value": [100, 110, 120, 115, 122] } df = pd.DataFrame(data) px.scatter(df, x="Date", y="Value", trendline="ols")
报错栈追踪
Traceback (most recent call last): File "/Users/****/Python/Aug22.py", line 12, in <module> tl = px.scatter( ^^^^^^^^^^^ File "/Users/****/venv/lib/python3.12/site-packages/plotly/express/_chart_types.py", line 66, in scatter return make_figure(args=locals(), constructor=go.Scatter) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/****/venv/lib/python3.12/site-packages/plotly/express/_core.py", line 2267, in make_figure patch, fit_results = make_trace_kwargs( ^^^^^^^^^^^^^^^^^^ File "/Users/****/venv/lib/python3.12/site-packages/plotly/express/_core.py", line 361, in make_trace_kwargs y_out, hover_header, fit_results = trendline_function( ^^^^^^^^^^^^^^^^^^^ File "/Users/****/venv/lib/python3.12/site-packages/plotly/express/trendline_functions/__init__.py", line 43, in ols import statsmodels.api as sm File "/Users/****/venv/lib/python3.12/site-packages/statsmodels/api.py", line 136, in <module> from .regression.recursive_ls import RecursiveLS File "/Users/****/venv/lib/python3.12/site-packages/statsmodels/regression/recursive_ls.py", line 14, in <module> from statsmodels.tsa.statespace.mlemodel import ( File "/Users/****/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/mlemodel.py", line 33, in <module> from .simulation_smoother import SimulationSmoother File "/Users/****/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/simulation_smoother.py", line 11, in <module> from .kalman_smoother import KalmanSmoother File "/Users/****/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/kalman_smoother.py", line 11, in <module> from statsmodels.tsa.statespace.representation import OptionWrapper File "/Users/****/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/representation.py", line 10, in <module> from .tools import ( File "/Users/****/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tools.py", line 14, in <module> from . import (_initialization, _representation, _kalman_filter, File "statsmodels/tsa/statespace/_initialization.pyx", line 1, in init statsmodels.tsa.statespace._initialization ImportError: dlopen(/Users/****/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/_representation.cpython-312-darwin.so, 0x0002): symbol not found in flat namespace '_npy_cabs'
平台信息
- macOS 14.6.1
- Python 3.12.5
- Apple M2
可行解决方法
1. 更新statsmodels到兼容版本
Scipy 1.14.1可能引入了ABI(应用二进制接口)变化,旧版statsmodels未适配。执行以下命令更新:
pip install --upgrade statsmodels
2. 源码编译安装statsmodels
如果预编译的wheel包存在兼容性问题,可手动源码编译适配当前环境:
pip uninstall -y statsmodels pip install --no-binary :all: statsmodels
3. 升级NumPy至兼容版本
报错中的_npy_cabs是NumPy的符号,确保NumPy版本与Scipy 1.14.1兼容:
pip install --upgrade numpy
4. 重建虚拟环境
若依赖存在隐性冲突,删除现有虚拟环境并重新安装所有依赖:
rm -rf venv python3 -m venv venv source venv/bin/activate pip install scipy==1.14.1 pandas plotly statsmodels numpy
内容的提问来源于stack exchange,提问作者jackal
相关产品推荐
相关产品推荐

