问题描述
我试图解决这个问题几天了,但找不到答案。
我正在构建一个桌面程序并使用 Pyinstaller 对其进行打包。它有效,但分布大小 即使在使用 --onefile、--onedir 和 virtualenv 时也非常大。我尝试使用 UPX 来减小 dist 大小,结果大小还可以,但是在 exe 激活时它不起作用。
非常感谢任何帮助,谢谢! (:
详情:
from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files('librosa')
我制作了一个简单的用例来重建错误('pip install traceback' for trace prints):
pyinstaller=4.1(后续版本同样错误), librosa=0.8.0(试过降级,还是没有运气) 蟒蛇 3.8.1 赢得 10 个
构建exe行: venv\Scripts\pyinstaller.exe --upx-dir=..\..\..\utilities\upx-3.96-win64 main.spec
main.py - 除了“import librosa”之外的所有行都用于监控:
try:
print('starting import..')
import sys,os
import time
import traceback
import librosa # problematic line
print('finished import')
# for prints
except Exception as e:
print('Exception was thrown')
print(e)
exc_type,exc_obj,exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
print(exc_type,fname,exc_tb.tb_lineno)
print()
traceback.print_exc()
time.sleep(50)
main.spec 文件:
block_cipher = None
a = Analysis(['main.py'],pathex=['C:\\Git\\Research\\upx_ovf'],binaries=[],datas=[],hiddenimports=['scipy.spatial.transform._rotation_groups','sklearn.utils._weight_vector'],hookspath=['.'],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)
pyz = PYZ(a.pure,a.zipped_data,cipher=block_cipher)
exe = EXE(pyz,a.scripts,a.binaries,a.zipfiles,a.datas,[],name='main',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,upx_exclude=[],runtime_tmpdir=None,console=True )
我得到的错误:
starting import..
Exception was thrown!
__DLL load Failed while importing _uarray: A dynamic link library (DLL) initialization routine Failed.
<class 'ImportError'> main.py__
Traceback (most recent call last):
File "main.py",line 6,in <module>
File "c:\git\research\upx_ovf\venv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py",line 493,in exec_module
exec(bytecode,module.__dict__)
File "librosa\__init__.py",line 211,module.__dict__)
File "librosa\core\__init__.py",module.__dict__)
File "librosa\core\audio.py",line 11,module.__dict__)
File "scipy\signal\__init__.py",line 292,module.__dict__)
File "scipy\signal\windows\__init__.py",line 41,module.__dict__)
File "scipy\signal\windows\windows.py",line 7,module.__dict__)
File "scipy\fft\__init__.py",line 74,module.__dict__)
File "scipy\fft\_basic.py",line 1,module.__dict__)
File "scipy\_lib\uarray.py",line 28,module.__dict__)
File "scipy\_lib\_uarray\__init__.py",line 115,module.__dict__)
File "scipy\_lib\_uarray\_backend.py",line 4,in <module>
**ImportError: DLL load Failed while importing _uarray: A dynamic link library (DLL) initialization routine Failed.**
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)