MacOS下python3运行脚本提示pandas未找到但python命令正常
根本原因
你的设备上存在多个独立的Python解释器环境,python、python3、pip三个命令没有绑定到同一个Python实例,这是MacOS设备上非常常见的多版本Python冲突问题:
- 当前
pip命令安装的所有第三方包(包括你看到的pandas 1.4.3),都只装在了python命令对应的解释器的包目录下,所以执行python script.py时可以正常导入依赖 python3命令指向的是另一个完全独立的Python解释器,它的包目录下没有安装pandas,自然会抛出ModuleNotFoundError错误
你可以执行下面三条命令确认路径对应关系,输出结果里python和pip的路径前缀会保持一致,和python3的路径有明显区别:
which python which python3 which pip
修复方案
根据你的使用需求选一种即可:
- 方案1:给python3解释器补装依赖
直接用python3自带的pip模块安装缺失的包,避免全局pip和解释器不匹配的问题,执行命令:
安装完成后再执行python3 -m pip install pandas scikit-learnpython3 script.py就可以正常运行。后续给对应解释器装包时都推荐用这种pythonX -m pip install的写法,可以彻底避免pip和解释器版本不匹配的问题。 - 方案2:固定使用可用的解释器
如果你没有必须使用python3命令的需求,直接保持现在的用法,用python script.py执行脚本即可,不需要做任何调整。 - 方案3:配置命令别名统一指向(不推荐新手使用)
如果想让两个python命令指向同一个解释器,可以在你所用shell的配置文件(Mac默认shell为zsh,对应配置文件是~/.zshrc)中添加别名配置,把路径替换成你之前通过which python查到的可用解释器完整路径:
添加完成后执行alias python="/查到的可用Python解释器完整路径" alias python3="/查到的可用Python解释器完整路径"source ~/.zshrc让配置生效即可。
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

