Mac OSX(High Sierra 10.13.4)下PyMySQL导入失败求助
嗨,这问题我之前也碰到过,核心原因大多是Python环境不匹配,具体拆解下来有这几个情况:
1. 环境路径不对应
Mac系统里通常会同时存在多个Python环境:比如系统自带的Python(/usr/bin/python)、你通过Homebrew安装的Python,或者是虚拟环境里的Python。你在命令行用pip install pymysql时,包是装在了当前终端默认的Python环境里,但Jupyter Notebook和VS Code可能在使用另一个完全不同的Python环境,自然找不到这个包。
2. Jupyter内核绑定的环境不对
Jupyter的内核是独立配置的,哪怕你终端用的是Python3.x,Jupyter可能默认绑定的是系统自带的Python2.7或者另一个版本的Python,这时候你在Jupyter里执行import PyMySQL就会报错。
3. VS Code的解释器配置错误
VS Code默认会自动选择一个Python解释器,但它选的不一定是你安装pymysql的那个环境,导致代码运行时找不到对应的包。
对应的解决步骤
第一步:先确认环境路径
先在终端里执行这两个命令,记下当前安装pymysql的Python和pip路径:
which python which pip
比如你可能得到/usr/local/bin/python3和/usr/local/bin/pip3,这就是你安装包的环境路径。
第二步:修复Jupyter Notebook的问题
在Jupyter里新建一个笔记本,执行以下代码,查看Jupyter当前使用的Python路径:
import sys print(sys.executable)
如果这个路径和你终端里which python得到的不一样,就需要把安装pymysql的环境添加为Jupyter内核:
- 回到终端,确保你在目标环境里(如果用了虚拟环境就先激活它)
- 安装ipykernel:
pip install ipykernel - 将当前环境添加到Jupyter内核:
python -m ipykernel install --user --name=my_pymysql_env - 重启Jupyter,在右上角的内核选择器里切换到
my_pymysql_env,再执行import PyMySQL就应该没问题了。
第三步:修复VS Code的问题
- 打开VS Code,点击左下角状态栏里显示的Python版本(比如
Python 2.7.16) - 在弹出的列表里,选择你之前记下的那个Python路径(比如
/usr/local/bin/python3) - 重启VS Code,再运行代码试试。
终极办法:直接指定环境安装
如果上面的步骤还是有问题,你可以直接用目标Python的绝对路径来安装pymysql,确保包装到正确的环境里:
# 把这里的路径换成你终端里which python得到的路径 /usr/local/bin/python3 -m pip install pymysql
内容的提问来源于stack exchange,提问作者Christina

