使用PyInstaller打包Python程序后遇mysql.connector相关错误求助
解决PyInstaller打包mysql.connector时的两个错误
错误拆解
你碰到两个核心问题:一是指定的caching_sha2_password模块未被正确识别,二是mysql connector的英文本地化文件缺失,触发ImportError: No localization support for language 'eng'。
解决步骤
方法1:命令行直接补全参数
先定位mysql.connector的安装路径,执行以下命令:
python -c "import mysql.connector; print(mysql.connector.__file__)"
输出类似venv/Lib/site-packages/mysql/connector/__init__.py,对应的locales目录就是venv/Lib/site-packages/mysql/connector/locales。
替换路径后执行打包命令(Windows用分号分隔路径,Mac/Linux用冒号):
# Windows示例 pyinstaller --onefile ^ --hidden-import mysql.connector.plugins.caching_sha2_password ^ --hidden-import mysql.connector.plugins.mysql_native_password ^ --hidden-import mysql.connector.locales.eng.client_error ^ --add-data "C:/path/to/mysql/connector/locales;mysql/connector/locales" ^ test.py # Mac/Linux示例 pyinstaller --onefile \ --hidden-import mysql.connector.plugins.caching_sha2_password \ --hidden-import mysql.connector.plugins.mysql_native_password \ --hidden-import mysql.connector.locales.eng.client_error \ --add-data "/path/to/mysql/connector/locales:mysql/connector/locales" \ test.py
方法2:用.spec文件灵活配置
- 生成基础.spec文件:
pyinstaller --onefile test.py
- 打开生成的
test.spec,修改Analysis部分:
a = Analysis( ['test.py'], pathex=[], binaries=[], # 补充需要隐藏导入的模块 hiddenimports=['mysql.connector.plugins.caching_sha2_password', 'mysql.connector.plugins.mysql_native_password', 'mysql.connector.locales.eng.client_error'], # 添加本地化文件目录 datas=[('C:/path/to/mysql/connector/locales', 'mysql/connector/locales')], ... )
- 用修改后的.spec文件打包:
pyinstaller test.spec
额外小技巧
在test.py开头手动导入本地化模块,PyInstaller可能会自动检测并打包:
import mysql.connector.locales.eng.client_error
内容的提问来源于stack exchange,提问作者wail_10
相关产品推荐
相关产品推荐

