运行调用pandas的Python程序报错No module named 'pandas.compat'如何解决
问题根因
问题核心是Python模块搜索路径优先级异常:~/.local/lib/python3.8/site-packages目录的搜索优先级高于你的Anaconda3环境的site-packages路径,导致程序优先加载了该目录下版本不兼容、文件缺失的pandas包,而非Anaconda环境中正常安装的pandas 1.3.3版本。你额外安装的pandas-compat是第三方独立包,不是pandas官方自带的pandas.compat内置模块,无法解决该报错。
修复步骤
第一步:先确认路径优先级
执行以下命令查看当前Python的搜索路径顺序:python3 -c "import sys; print('\n'.join(sys.path))"确认输出中
/users/<userid>/.local/lib/python3.8/site-packages是否排在/users/<userid>/anaconda3/lib/python3.x/site-packages之前(x替换为你Anaconda环境的Python小版本号,比如3.8就为3.8)。第二步:临时验证问题
执行以下命令临时屏蔽用户本地site-packages目录,运行测试程序确认问题来源:export PYTHONNOUSERSITE=1 python filter_SNV_SV.py若运行不再报错,即可确认是
.local目录下的pandas导致的问题。第三步:选择永久修复方案
方案1(推荐,无残留影响):直接删除.local目录下的损坏pandas包rm -rf /users/<userid>/.local/lib/python3.8/site-packages/pandas*执行后Python会自动优先加载Anaconda环境内的pandas包。
方案2(需要保留
.local下的包时使用):调整模块搜索路径优先级
在你的shell配置文件(~/.bashrc/~/.bash_profile/~/.zshrc,根据你使用的shell选择)末尾添加一行:export PYTHONPATH="/users/<userid>/anaconda3/lib/python3.x/site-packages:$PYTHONPATH"替换x为对应Python版本号后,执行
source ~/.bashrc(对应你修改的配置文件)生效。第四步:验证修复结果
执行以下命令确认pandas加载路径正确:python3 -c "import pandas as pd; print(pd.__file__)"输出路径为
/users/<userid>/anaconda3开头的路径即为修复成功。
内容的提问来源于stack exchange,提问作者BeginneR

