
当使用 import mysql 报错 ModuleNotFoundError: No module named 'mysql',本质是因 mysql-connector-python 仅安装在虚拟环境中,系统 Python 环境不可见;正确做法是明确区分安装目标环境,而非依赖全局安装。
当使用 `import mysql` 报错 `modulenotfounderror: no module named 'mysql'`,本质是因 `mysql-connector-python` 仅安装在虚拟环境中,系统 python 环境不可见;正确做法是明确区分安装目标环境,而非依赖全局安装。
在 Python 开发中,虚拟环境(venv)的核心设计原则是隔离性:它创建一个独立的 Python 运行时和包管理空间,与系统 Python 完全解耦。因此,当你执行 python3 -m venv env 并激活后运行 pip install mysql-connector-python,该包仅被安装到 env/lib/python3.x/site-packages/ 下,对系统级 python3 或其他虚拟环境完全不可见——这正是你遇到问题的根本原因。
⚠️ 需要特别注意:不推荐、也不应为“绕过激活”而将包全局安装(例如在未激活 venv 时运行 pip install mysql-connector-python)。原因如下:
- 全局安装易引发版本冲突,污染系统环境;
- 违背 Python 最佳实践(每个项目应有专属、可复现的依赖环境);
-
import mysql本身是错误写法——官方包名为mysql.connector,正确导入应为:
import mysql.connector # 或更规范的用法 from mysql.connector import connect, Error
✅ 正确解决方案如下:
-
始终在激活的虚拟环境中运行脚本(推荐且标准做法):
立即学习“Python免费学习笔记(深入)”;
source env/bin/activate # Linux/macOS # 或 env\Scripts\activate # Windows python your_script.py
-
若需免激活执行,使用虚拟环境中的 Python 解释器绝对路径:
# 直接调用 venv 内的 python,无需 activate ./env/bin/python your_script.py # Linux/macOS # env\Scripts\python.exe your_script.py # Windows
-
确保依赖可复现:生成并维护
requirements.txtpip freeze > requirements.txt # 在激活的 venv 中执行 # 后续可一键重建环境 python3 -m venv new_env && source new_env/bin/activate && pip install -r requirements.txt
总结:这不是配置缺陷,而是虚拟环境机制的正常体现。坚持“每个项目一个 venv + requirements.txt + 显式调用 venv 解释器”的工作流,才能保障代码可移植性、协作一致性和长期可维护性。


















