使用PyInstaller打包含music21的Python程序时出现AttributeError报错
问题:PyInstaller打包music21程序时出现
AttributeError: module 'music21' has no attribute 'alpha' 环境信息
- music21版本:6.7.1
- 操作系统:Ubuntu 18.04
- Python版本:3.6
- 打包命令:
pyinstaller --onefile main.py
错误信息
[17939] WARNING: file already exists but should not: /tmp/_MEIxs8i9Y/pyarrow/lib.cpython-36m-x86_64-linux-gnu.so Traceback (most recent call last): File "main.py", line 1, in <module> from NeckDisplayer import NeckDisplayer File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 665, in _load_unlocked File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module File "NeckDisplayer.py", line 2, in <module> import music21.pitch File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 665, in _load_unlocked File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module File "music21/__init__.py", line 192, in <module> AttributeError: module 'music21' has no attribute 'alpha' [17942] Failed to execute script 'main' due to unhandled exception!
解决方法
1. 调整导入顺序与方式
music21的alpha属性是主模块初始化时动态设置的,直接导入子模块会导致主模块未完全初始化。修改代码导入逻辑:
# 替换原有的 import music21.pitch import music21 # 可选:触发music21初始化,确保所有属性加载完成 music21.mainTest() from music21 import pitch
2. 自定义PyInstaller Hook文件
创建hook-music21.py文件,确保music21的所有子模块和数据文件被正确打包:
from PyInstaller.utils.hooks import collect_data_files, collect_submodules datas = collect_data_files('music21') hiddenimports = collect_submodules('music21')
打包时指定hook目录:
pyinstaller --onefile --additional-hooks-dir=. main.py
3. 调整music21版本
music21 6.x部分版本与PyInstaller存在兼容性问题,可尝试:
- 升级到稳定版(如7.x系列):
pip install --upgrade music21 - 降级到5.x系列:
pip install music21==5.7.2
4. 处理pyarrow警告(可选)
如果程序不需要pyarrow,打包时排除该模块以消除警告:
pyinstaller --onefile --exclude-module pyarrow main.py
内容的提问来源于stack exchange,提问作者macchina001
相关产品推荐
相关产品推荐

