You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入自定义模块后scipy.stats丢失 WSL命令行运行报错如何解决

问题解决步骤

1. 排查本地文件命名冲突

这是该类导入报错最常见的根因,先检查当前工作目录、模块导入路径下是否存在命名为scipy.py、stats.py的自定义脚本或同名文件夹,执行以下命令快速排查:

# 在bar.py所在目录执行
find . -name "scipy.py" -o -name "stats.py"

如果找到对应文件,直接修改其命名,同时删除所有缓存文件避免旧逻辑残留:

find . -name "__pycache__" -type d -exec rm -r {} +

同时检查已导入的其他模块(psd_processing、uptake_processing)中是否存在将scipy作为变量名重赋值的逻辑,也可以在bar.py开头加入以下代码校验scipy加载路径是否正确:

import scipy
print(scipy.__file__)

正常输出应为系统scipy安装路径,格式类似/usr/lib/python3.x/site-packages/scipy/__init__.py,如果输出为你自己目录下的文件,即可确认存在命名冲突。

2. 修正Python模块搜索路径优先级

因为未使用虚拟环境,可能存在模块搜索路径混乱的问题,先通过命令获取scipy实际安装路径:

pip3 show scipy | grep Location

将输出的路径添加到bar.py最开头,强制提升系统模块的搜索优先级:

import sys
# 替换为上一步获取到的scipy安装路径
sys.path.insert(0, "/usr/local/lib/python3.8/dist-packages")

3. 调整导入写法为函数内部延迟导入

你提到报错出现在linregress调用行而非导入行,说明导入时存在时序性的变量覆盖问题,将scipy相关导入直接写入foo函数内部即可规避冲突:

import numpy as np

def foo(df_1, df_2, data_dict):
    from scipy.stats import linregress
    # 其余原有代码保持不变
    for index, row in df_2.iterrows():
        x = []
        for d in data_dict:
            x.append(row[d])
        x = np.array(x)
    for index, row in df_1.iterrows():
        y = []
        for d in data_dict:
            y.append(row[d])
        y = np.array(y)
        s, i, r, p, se = linregress(x, y)

4. 校验Python与pip版本匹配度

可能存在pip安装的模块和运行代码的Python版本不匹配的问题,执行以下命令校验:

python3 -m pip list | grep scipy

如果输出中没有scipy,说明你之前用pip安装的模块不在当前python3的搜索路径下,用以下命令重新安装即可:

python3 -m pip install --force-reinstall scipy

内容的提问来源于stack exchange,提问作者blanky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:15:04