PyInstaller打包含ytmusicapi的Python程序时出现翻译文件缺失错误
YTMusicAPI打包为EXE后出现No translation file found错误的解决办法
问题描述
Python调用ytmusicapi的程序直接运行正常,使用命令pyinstaller --noconfirm --onefile --console main.py打包为.exe后,运行时触发FileNotFoundError: [Errno 2] No translation file found for domain: 'base',错误出现在ytmusic = YTMusic()初始化行。
解决方法
1. 打包时包含本地化文件
PyInstaller不会自动收集ytmusicapi的翻译文件,需通过--add-data参数手动包含:
- Windows系统执行:
pyinstaller --noconfirm --onefile --console --add-data "%PYTHONPATH%\Lib\site-packages\ytmusicapi\locales;ytmusicapi\locales" main.py
(若不清楚PYTHONPATH,可在Python终端输入import sys; print(sys.path)获取site-packages路径)
- Linux/macOS系统执行:
pyinstaller --noconfirm --onefile --console --add-data "$(python -c 'import ytmusicapi; print(ytmusicapi.__path__[0])')/locales:ytmusicapi/locales" main.py
2. 显式指定初始化语言
创建YTMusic实例时直接指定支持的语言(如英文),避免自动检测系统语言:
ytmusic = YTMusic(language='en')
3. 修改库源码启用fallback(不推荐)
找到site-packages/ytmusicapi/ytmusic.py中__init__方法的gettext.translation调用,将fallback=False改为fallback=True:
translation = gettext.translation('base', localedir=locales_dir, languages=[self.language], fallback=True)
找不到对应翻译文件时会自动使用默认文本,不再抛出错误。
内容的提问来源于stack exchange,提问作者Panzu 05
相关产品推荐
相关产品推荐

