PyInstaller打包exe后mysql_native_password认证插件不支持问题求助
解决方案
1. 强制PyInstaller打包缺失的依赖模块
PyInstaller可能遗漏了mysql-connector-python中认证相关的核心模块,可通过以下方式补充:
- 使用
--hidden-import参数强制导入认证模块:python3 -m PyInstaller --hidden-import mysql.connector.auth .\home.py - 若仍无效,手动添加mysql库的完整路径到打包资源中(替换为你的实际site-packages下mysql文件夹路径):
# Windows系统 python3 -m PyInstaller --add-data "C:\PythonXX\Lib\site-packages\mysql;mysql" .\home.py # macOS/Linux系统 python3 -m PyInstaller --add-data "/usr/local/lib/pythonX.X/site-packages/mysql:mysql" .\home.py
2. 显式指定认证插件参数
在数据库连接代码中直接声明使用mysql_native_password,避免打包后程序自动选择错误的认证方式:
mysql.connector.connect( host="localhost", user="user", passwd="password", database="db_name", auth_plugin='mysql_native_password' )
3. 确保打包环境与运行环境一致
- 检查打包用的Python版本和IDE中运行的版本是否完全一致,执行
python3 --version对比 - 清理并重装依赖,避免残留冲突库:
pip uninstall mysql-connector -y pip install mysql-connector-python --force-reinstall
4. 排查Docker数据库的网络访问问题
- 确认Docker容器的3306端口已正确映射到宿主机,执行
docker ps查看是否有0.0.0.0:3306->3306/tcp的映射记录 - Windows系统下,尝试将连接的
host改为host.docker.internal,因为Windows中Docker的localhost默认指向容器内部而非宿主机
内容的提问来源于stack exchange,提问作者user8088197
相关产品推荐
相关产品推荐

