У меня проблема с исключением некоторых больших DLL-файлов, которые не нужны, но включены по умолчанию. Я попробовал решение ниже, но после компиляции эти файлы все еще существуют!
d3dcompiler_47.dll
_ssl.pyd
_hashlib.pyd
libcrypto-1_1.dll
libGLESv2.dll
opengl32sw.dll
Qt5Network.dll
Qt5Qml.dll
Qt5QmlModels.dll
Я использую эту команду для генерации файла spe c:
pyi-makespec --add-binary *.dll;. --windowed --onedir --noupx --name "AppName" --version-file=version.txt --icon=main.ico main.py
Вот сгенерированный файл spe c:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['C:\\Users\\user\\Desktop\\win'],
binaries=[('*.dll', '.')],
datas=[],
hiddenimports=[],
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,
[],
exclude_binaries=True,
name='AppName',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=False , version='version.txt', icon='main.ico')
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=False,
upx_exclude=[],
name='AppName')
Затем я редактирую файл spe c так:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['C:\\Users\\user\\Desktop\\win'],
binaries=[('*.dll', '.')],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
a.binaries = a.binaries - TOC([
('d3dcompiler_47.dll', None, None),
('_ssl.pyd', None, None),
('_hashlib.pyd', None, None),
('libcrypto-1_1.dll', None, None),
('libGLESv2.dll', None, None),
('opengl32sw.dll', None, None),
('Qt5Network.dll', None, None),
('Qt5Qml.dll', None, None),
('Qt5QmlModels.dll', None, None)
])
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='AppName',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=False , version='version.txt', icon='main.ico')
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=False,
upx_exclude=[],
name='AppName')
И, наконец, использую эту команду для компиляции, используя новый файл spe c:
C:\Python\python -m PyInstaller --noupx --windowed --onedir "AppName.spec"
Может кто-нибудь сказать мне, что я делаю не так?
Любая помощь с благодарностью.
Спасибо.