Работа с PyInstaller Я заметил, что просто не удается связать зависимости QML, а затем заморозить приложение. Вы можете проверить, также ли это ваш случай, скопировав папки QtQuick
и QtQuick.2
из пакетов сайта python (<your_python_path>\Lib\site-packages\PyQt5\Qt\qml
) и поместив их рядом с замораживаемым исполняемым файлом:
QtQuick
QtQuick.2
your_executable.exe
Если приложение работает после вы можете отредактировать файл .spec
, чтобы автоматически связывать эти папки (pyinstaller generate .spec
-файл при первом запуске).
# -*- mode: python -*-
import os
import site
block_cipher = None
site_packages_dir = site.getsitepackages()[1]
qml_dir = os.path.join(site_packages_dir, 'PyQt5', 'Qt', 'qml')
added_files = [
(os.path.join(qml_dir, 'QtQuick'), 'QtQuick'),
(os.path.join(qml_dir, 'QtQuick.2'), 'QtQuick.2'),
]
a = Analysis(['pyqt5_qml.py'],
binaries=None,
datas=added_files,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='app',
debug=False,
strip=False,
upx=False,
console=True,
)
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=False,
name='pyqt5_qml')
Затем попробуйте запустить pyinstaller
против этого spec-файла: pyinstaller pyqt5_qml.spec