Build.spec
# -*- mode: python ; coding: utf-8 -*-
import os
import sys
from PyInstaller.utils.hooks import collect_all
block_cipher = None
# ==============================================================================
# Конфигурация путей VLC
# ==============================================================================
# Укажите правильный путь к вашей установке VLC!
VLC_PATH = r"C:\Program Files\VideoLAN\VLC"
# Основные DLL
vlc_binaries = [
(os.path.join(VLC_PATH, 'libvlc.dll'), '.'),
(os.path.join(VLC_PATH, 'libvlccore.dll'), '.')
]
# Плагины VLC
vlc_plugins = [
(os.path.join(VLC_PATH, 'plugins'), 'plugins')
]
# ==============================================================================
# Анализ и сборка проекта
# ==============================================================================
# Сбор зависимостей PyQt5
pyqt5_datas, pyqt5_binaries, pyqt5_hidden = collect_all('PyQt5')
a = Analysis(
['car_counter.py'],
pathex=[],
binaries=vlc_binaries + pyqt5_binaries,
datas=[
*pyqt5_datas,
*vlc_plugins,
('icon.ico', '.'), # Иконка приложения
],
hiddenimports=pyqt5_hidden + [
'PyQt5.QtCore',
'PyQt5.QtGui',
'PyQt5.QtWidgets',
'vlc' # Для python-vlc
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[
'numpy',
'scipy',
'pandas',
'matplotlib'
],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
name='CarCounter'
)
# ==============================================================================
# Конфигурация EXE
# ==============================================================================
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='CarCounter',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True, # Использовать UPX-сжатие
console=False, # Скрыть консоль
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon='icon.ico', # Путь к иконке
runtime_tmpdir=None,
argv_emulation=False
)