Mac设备Jupyter Notebook用pip安装库后仍提示ModuleNotFoundError问题求助
这是Jupyter运行内核绑定的Python解释器,与!pip命令所属的Python解释器路径不匹配导致的冲突,你设备上同时存在系统自带Python2.7、自行安装的Python3.9、Anaconda Python三个环境,环境变量PATH的优先级混乱,才会出现安装和导入分属两个环境的问题。
步骤1:确认当前Jupyter使用的Python解释器路径
在Jupyter的代码单元格中执行以下代码:
import sys print(sys.executable)
该输出结果就是当前Jupyter内核对应的Python解释器的绝对路径,后续所有pip安装操作都基于这个路径执行,就不会出现路径不匹配的问题。
步骤2:使用当前Python解释器对应的pip安装库
直接用第一步得到的路径调用pip安装目标库即可,命令格式为:!<第一步输出的Python绝对路径> -m pip install 目标库名
举个示例,如果你第一步得到的路径是/Users/xxx/opt/anaconda3/bin/python,安装pyenchant就执行:!/Users/xxx/opt/anaconda3/bin/python -m pip install pyenchant
这种方式会直接将库安装到当前Jupyter内核对应的site-packages目录下,安装完成后直接import即可正常调用。
步骤3:修复!python -m pip报错问题
你执行该命令报错是因为当前环境变量里python默认指向系统自带的Python2.7,Mac系统的Python2.7默认没有内置pip,所以会提示找不到模块。不需要修改系统默认配置,使用上面的绝对路径调用方式即可完全规避该问题。
如果你不想每次都输入完整路径,可以调整环境变量的优先级,将你常用的Python的bin目录放到PATH最前面:
- 打开终端,如果你用的是Mac默认的zsh终端,执行
open ~/.zshrc;如果用的是bash终端,执行open ~/.bash_profile - 在打开的配置文件末尾添加一行:
export PATH="你常用的Python的bin目录路径:$PATH",比如常用Anaconda Python就填/Users/你的用户名/opt/anaconda3/bin - 保存关闭文件后,在终端执行
source ~/.zshrc或者source ~/.bash_profile使配置生效 - 重启Jupyter Notebook后,
python和pip命令就会默认指向你设置的Python版本,不会再出现路径冲突问题。
你执行import enchant时提示找不到pyspellchecker,是pyenchant的依赖未安装完整导致的,用上述安装方法单独安装一次pyspellchecker即可解决。
内容的提问来源于stack exchange,提问作者Anas Rzq

