Python3.9导入mysql.connector报No module named '_version'错误
import mysql.connector触发ModuleNotFoundError: No module named '_version'解决方法 运行环境为Python 3.9,安装mysql-connector-python后导入报错,按以下优先级排查修复:
1. 清理冲突包与损坏安装
该报错90%以上是因为同时安装了多个同名MySQL连接器包、或者pip安装缓存损坏导致包内文件缺失:
- 先完全卸载所有相关衍生包,避免命名空间冲突:
python -m pip uninstall -y mysql-connector-python mysql-connector mysql-connector-python-rf
注意:
mysql-connector、mysql-connector-python-rf均非Oracle官方维护的连接器包,和官方包共用mysql命名空间,混装会直接破坏导入逻辑。
- 清理pip本地缓存,重新安装适配Python3.9的稳定官方版本:
python -m pip cache purge python -m pip install mysql-connector-python==8.0.33
2. 校验Python环境匹配度
多版本Python/虚拟环境场景下,经常出现pip装包到A环境、脚本跑在B环境的问题:
- 在你的脚本开头加入以下两行代码,打印运行脚本实际使用的解释器路径:
import sys print(sys.executable)
- 用打印出的解释器绝对路径重新执行安装命令,确保包装到脚本实际运行的环境中。例如打印出的解释器路径为
/home/dir/.local/bin/python3.9,则执行:
/home/dir/.local/bin/python3.9 -m pip install mysql-connector-python==8.0.33
3. 校验包文件完整性与权限
- 进入报错信息提示的包路径:
/home/dir/.local/lib/python3.9/site-packages/mysql/connector/,检查目录下是否存在_version.py文件。如果文件不存在,回到第一步完全卸载后重装。 - 如果文件存在,执行以下命令修复用户目录下包的读取权限,避免权限不足导致Python无法加载模块文件:
chown -R $USER:$USER /home/dir/.local/lib/python3.9/site-packages/
4. 排查工作目录命名冲突
检查脚本所在目录/home/dir/admin/deployment/social/下,是否存在命名为mysql.py的文件、或者名为mysql的自定义文件夹。Python导入模块时会优先读取当前工作目录下的文件,这类同名内容会覆盖官方包的命名空间,导致内部模块加载失败,存在的话直接重命名为非冲突名称即可。
验证修复
执行以下命令测试导入,正常输出版本号即为修复完成:
python -c "import mysql.connector; print('导入成功,连接器版本:', mysql.connector.__version__)"
内容的提问来源于stack exchange,提问作者Evan Gertis
相关产品推荐
相关产品推荐

