已安装pymysql但Python仍报ModuleNotFoundError错误,求助解决
解决Python导入pymysql提示ModuleNotFoundError的问题
我之前也碰到过一模一样的情况,核心原因大概率是你安装pymysql的Python环境和运行代码的环境不匹配,下面一步步帮你排查解决:
第一步:确认当前运行代码的Python环境
先搞清楚你执行Python程序时用的是哪个版本、哪个路径的Python:
# 查看Python3的具体路径 which python3 # 查看当前Python的版本号 python3 --version
接着检查系统通过apt安装的pymysql所在的位置:
dpkg -L python3-pymysql
输出里会出现类似/usr/lib/python3/dist-packages/pymysql的路径,接下来验证这个路径是否在你的Python环境的搜索列表里:
# 打开Python交互模式,执行以下代码 import sys print(sys.path)
如果上面查到的pymysql路径不在这个列表里,就实锤是环境不匹配的问题了。
第二步:针对性解决问题
根据不同的场景,选择对应的解决方法:
场景1:直接使用系统默认Python,但pip和Python不对应
如果你的Python路径是/usr/bin/python3,那直接用对应路径的pip重新安装,确保包安装到当前使用的环境里:
/usr/bin/pip3 install pymysql --upgrade
场景2:使用了虚拟环境(conda/venv)
如果你激活了虚拟环境,系统级安装的pymysql不会被虚拟环境识别,需要在激活环境后重新安装:
- conda环境:
# 先激活你的conda环境(替换成你自己的环境名) conda activate your_env_name # 在环境内安装pymysql conda install PyMySQL - venv虚拟环境:
# 激活虚拟环境(Linux/macOS) source your_venv_dir/bin/activate # Windows系统用:your_venv_dir\Scripts\activate # 在环境内安装pymysql pip install pymysql
场景3:系统存在多个Python版本
比如你同时装了Python3.5、Python3.8等,apt安装的包对应系统默认版本,而你运行代码用的是另一个版本,直接指定版本安装即可:
# 替换成你实际使用的Python版本号 python3.8 -m pip install pymysql
场景4:确认导入语句的大小写
最后再检查下你的代码:导入时必须写import pymysql(全小写),不能写成import PyMySQL——安装包名是PyMySQL,但Python导入时要求用小写的包名。
按照上面的步骤排查,应该就能解决导入报错的问题了。
内容的提问来源于stack exchange,提问作者Pankaj Kalania




