Python 使用UPX压缩和
我花了几天时间试图解决这个问题,但都找不到答案 我正在构建一个桌面程序,并使用Pyinstaller进行打包。它可以工作,但分布大小不同 即使在使用--onefile、-onedir和virtualenv时也非常大。我尝试使用UPX来减小dist大小,结果大小还可以,但当exe被激活时它就不起作用了 非常感谢您的帮助,谢谢!(: 详情: librosa钩子文件:Python 使用UPX压缩和,python,hook,pyinstaller,librosa,upx,Python,Hook,Pyinstaller,Librosa,Upx,我花了几天时间试图解决这个问题,但都找不到答案 我正在构建一个桌面程序,并使用Pyinstaller进行打包。它可以工作,但分布大小不同 即使在使用--onefile、-onedir和virtualenv时也非常大。我尝试使用UPX来减小dist大小,结果大小还可以,但当exe被激活时它就不起作用了 非常感谢您的帮助,谢谢!(: 详情: librosa钩子文件: from PyInstaller.utils.hooks import collect_data_files datas = coll
from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files('librosa')
我已经生成了一个简单的用例来重建错误(“跟踪打印的pip安装回溯”):
pyinstaller=4.1(在更高版本中出现相同错误),
librosa=0.8.0(试图降级,但仍然没有运气)
Python 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, 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\core\__init__.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\core\audio.py", line 11, 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 "scipy\signal\__init__.py", line 292, 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 "scipy\signal\windows\__init__.py", line 41, 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 "scipy\signal\windows\windows.py", line 7, 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 "scipy\fft\__init__.py", line 74, 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 "scipy\fft\_basic.py", line 1, 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 "scipy\_lib\uarray.py", line 28, 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 "scipy\_lib\_uarray\__init__.py", line 115, 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 "scipy\_lib\_uarray\_backend.py", line 4, in <module>
**ImportError: DLL load failed while importing _uarray: A dynamic link library (DLL) initialization routine failed.**
开始导入。。
异常被抛出!
__导入_uarray时DLL加载失败:动态链接库(DLL)初始化例程失败。
main.py__
回溯(最近一次呼叫最后一次):
文件“main.py”,第6行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“librosa\\ uuuu init\ uuuuu.py”,第211行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“librosa\core\\uuuuu init\uuuuuu.py”,第6行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“librosa\core\audio.py”,第11行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“scipy\signal\\uuuuu init\uuuuuu.py”,第292行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“scipy\signal\windows\\uuuuu init\uuuuuu.py”,第41行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“scipy\signal\windows\windows.py”,第7行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“scipy\fft\\uuuuu init\uuuuuu.py”,第74行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“scipy\fft\\ u basic.py”,第1行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“scipy\\u lib\uarray.py”,第28行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“scipy\\u lib\\u uarray\\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuu.py”,第115行,在
exec_模块中的文件“c:\git\research\upx_ovf\venv\lib\site packages\PyInstaller\loader\pyimod03_importers.py”,第493行
exec(字节码、模块、指令)
文件“scipy\\u lib\\u uarray\\u backend.py”,第4行,在
**导入错误:导入时DLL加载失败\u uarray:动态链接库(DLL)初始化例程失败**