Jupyter Notebook中Scipy RuntimeWarning溯源:跨环境差异下的调试求助
调试Scipy统计分析阶段的溢出警告问题
环境信息
基于Python 3.9.0搭建venv虚拟环境,安装的包及版本如下:
#For python 3.9.0 scipy==1.10.1 pandas==2.0.1 PyYAML==6.0 scikit-learn==1.2.2 statsmodels==0.14.0 natsort==8.3.1 plotly==5.14.1 seaborn==0.12.2 notebook==6.5.4 requests==2.31.0 openpyxl==3.1.2 kaleido==0.2.1 UpSetPlot==0.8.0 dash-bio==1.0.2 logomaker==0.8 pingouin==0.5.3
问题现象
启动Jupyter Notebook导入代码分析数据时,统计分析阶段反复出现以下RuntimeWarning:
/Users/bob/Documents/virtualEnv20230909/lib/python3.9/site-packages/scipy/stats/_continuous_distns.py:6832: RuntimeWarning: overflow encountered in _nct_sf return np.clip(_boost._nct_sf(x, df, nc), 0, 1) /Users/bob/Documents/virtualEnv20230909/lib/python3.9/site-packages/scipy/stats/_continuous_distns.py:6826: RuntimeWarning: overflow encountered in _nct_cdf return np.clip(_boost._nct_cdf(x, df, nc), 0, 1) /Users/bob/Documents/virtualEnv20230909/lib/python3.9/site-packages/scipy/stats/_continuous_distns.py:6832: RuntimeWarning: overflow encountered in _nct_sf return np.clip(_boost._nct_sf(x, df, nc), 0, 1)
目前观察警告似乎不影响最终结果,但无法完全确认。奇怪的是,同事使用相同包版本的虚拟环境运行同一代码,从未触发该警告。
排查中的困境
- 根据错误回溯定位到scipy的stats模块,但在
_continuous_distns.py中找不到_boost._nct_sf和_boost._nct_cdf的定义;进入_boost目录后也找不到这两个函数的实现,仅在__init__.py中被引用。 - 警告信息中“overflow encountered in”指向的函数与报错行的关联逻辑不清晰。
- Jupyter Notebook调试效率极低,修改导入代码后必须重启内核;在VS Code中调试时,虽大致知道错误出现位置,但设置断点后仍无法精确定位根源。
- 怀疑问题超出虚拟环境配置范围,但无法确认具体原因。
求助
有哪些方法可以更有效地调试该问题?
内容的提问来源于stack exchange,提问作者Bob McBobson
相关产品推荐
相关产品推荐

