使用PyInstaller打包含deep_translator的Python程序时遇模块缺失错误
问题描述
我正在开发一款程序,功能是从电子表格读取数据,结合用户输入生成自定义信件。信件需要保留英文版本并翻译成西班牙语,因此用deep_translator处理翻译。程序在命令行运行正常,但用PyInstaller打包后出现以下错误:
Traceback (most recent call last): File "userInterface.py", line 5, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 384, in exec_module File "reportGenerator.py", line 11, in <module> File "PyInstaller\loader\pyimod02_importers.py", line 384, in exec_module File "letter.py", line 1, in <module> ModuleNotFoundError: No module named 'deep_translator' [PYI-30260:ERROR] Failed to execute script 'userInterface' due to unhandled exception!
我最初使用的打包命令如下,也尝试过--collect-all参数和自定义钩子文件,但都没解决问题:
pyinstaller --onefile --hidden-import=openpyxl --hidden-import=docx --hidden-import=deep_translator --add-data "logo.py;." --add-data "student.py;." --add-data "filters.py;." --add-data "settings.py;." userInterface.py
解决方法
- 把原命令里的
--hidden-import=deep_translator替换成--collect-all=deep_translator,强制PyInstaller收集该库的所有文件,完整命令:
pyinstaller --onefile --hidden-import=openpyxl --hidden-import=docx --collect-all=deep_translator --add-data "logo.py;." --add-data "student.py;." --add-data "filters.py;." --add-data "settings.py;." userInterface.py
- 先通过
pip show deep_translator查看库的安装路径,然后用--paths参数告诉PyInstaller该路径,比如:
pyinstaller --onefile --hidden-import=openpyxl --hidden-import=docx --hidden-import=deep_translator --paths="你的deep_translator安装路径" --add-data "logo.py;." --add-data "student.py;." --add-data "filters.py;." --add-data "settings.py;." userInterface.py
- 手动写钩子文件:在项目根目录新建
hook-deep_translator.py,内容如下,打包时加上--additional-hooks-dir=.指定钩子目录:
from PyInstaller.utils.hooks import collect_all datas, binaries, hiddenimports = collect_all('deep_translator')
修改后的打包命令:
pyinstaller --onefile --hidden-import=openpyxl --hidden-import=docx --additional-hooks-dir=. --add-data "logo.py;." --add-data "student.py;." --add-data "filters.py;." --add-data "settings.py;." userInterface.py
- 更新PyInstaller和deep_translator到最新版本,再尝试打包:
pip install --upgrade pyinstaller deep_translator
内容的提问来源于stack exchange,提问作者Rattus
相关产品推荐
相关产品推荐

