Mit pyinstaller erstellte Binary gibt "ModuleNotFoundError: No module named 'PySide6'" aus

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Easter Frisian
User
Beiträge: 4
Registriert: Samstag 8. November 2025, 19:54

Also: Ich habe ein Programm mit Python unter Linux Mint erstellt, welches mehrere im QT Designer erstellte Forms verwendet. Das ganze läuft in einem virtuellen Environment. Dort sind alle erforderlichen Abhängigkeiten installiert. Im Idle gestartet läuft das ganze super. Im Hauptscript ist ein SheBang enthalten, so dass ich das Script auch in der Bash mit "./main.py" starten kann - auch das funktioniert einwandfrei.

Jetzt habe ich es gewagt, zu versuchen, daraus mittels pyinstaller und dem Befehl "pyinstaller --onefile main.py" eine ausführbare Datei zu erstellen. Der Befehl wurde aus dem laufenden venv gestartet. Beim Versuch, diese Datei in der Bash mittels "./main" zu starten, erscheint folgende Fehlermeldung:

Traceback (most recent call last):
File "main.py", line 4, in <module>
from PySide6.QtWidgets import QApplication, QMainWindow, QListWidget, QDialog
ModuleNotFoundError: No module named 'PySide6'
[PYI-32259:ERROR] Failed to execute script 'main' due to unhandled exception!

Warum kommt es dazu? Gefunden habe ich bislang nur Antworten im Netz, die sich auf ein überhaupt gar nicht installiertes Paket PySide6 bezogen und wie man es installieren kann. Es ist aber ja installiert.

Installiert in das venv sind folgende Pakete:

PyQt6==6.10.0
PyQt6-Qt6==6.10.0
PyQt6-WebEngine==6.10.0
PyQt6-WebEngine-Qt6==6.10.0
PyQt6_sip==13.10.2
PySide6==6.10.1
PySide6_Addons==6.10.1
PySide6_Essentials==6.10.1
shiboken6==6.10.1

PySide6 ist also auf jeden Fall vorhanden, wird aber irgendwie nicht vom pyinstaller berücksichtigt. Wie komme ich nun aus der Nummer raus?
Benutzeravatar
sparrow
User
Beiträge: 4606
Registriert: Freitag 17. April 2009, 10:28

@"Easter Frisian": Wie erstellst du die executable? Bitte zeige den Befehl, den du verwendest. Wie sieht die Ausgabe des Befehls aus? (Da müsste eine Menge ausgegeben werden). Wie sieht dein .spec-File aus?
Easter Frisian
User
Beiträge: 4
Registriert: Samstag 8. November 2025, 19:54

Nun, den Befehl zum erstellen der ausführbaren Datei habe ich ja genannt: pyinstaller --onefile main.py

//Wie sieht die Ausgabe beim Erstellen aus...//

Nun, ich habe eine Datei "warn-main.txt" gefunden im Build-Ordner. Ich denke, da erklärt sich schon was:

//This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running your program. Python and
Python 3rd-party packages include a lot of conditional or optional modules. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.

Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement

IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!

missing module named pyimod02_importers - imported by /home/effeff/.local/lib/python3.12/site-packages/PyInstaller/hooks/rthooks/pyi_rth_pkgutil.py (delayed)
missing module named winreg - imported by importlib._bootstrap_external (conditional)
missing module named nt - imported by os (delayed, conditional, optional), ntpath (optional), shutil (conditional), importlib._bootstrap_external (conditional)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
missing module named _winapi - imported by encodings (delayed, conditional, optional), ntpath (optional), shutil (conditional), subprocess (conditional)
missing module named msvcrt - imported by subprocess (optional)
missing module named 'PySide6.QtWidgets' - imported by frmMain (top-level), frmAddMagazine (top-level), frmAddGenre (top-level), frmDeleteMagazine (top-level)
missing module named 'PySide6.QtGui' - imported by frmMain (top-level), frmAddMagazine (top-level), frmAddGenre (top-level), frmDeleteMagazine (top-level)
missing module named 'PySide6.QtCore' - imported by frmMain (top-level), frmAddMagazine (top-level), frmAddGenre (top-level), frmDeleteMagazine (top-level)
missing module named 'PySide6.QtWebEngineWidgets' - imported by frmMain (top-level)
missing module named 'PySide6.QtWebEngineCore' - imported by /home/effeff/Python/MainWindow/main.py (top-level)
missing module named PySide6 - imported by /home/effeff/Python/MainWindow/main.py (top-level)//

Das spec-File sieht so aus:

//# -*- mode: python ; coding: utf-8 -*-


a = Analysis(
['main.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,//
Benutzeravatar
sparrow
User
Beiträge: 4606
Registriert: Freitag 17. April 2009, 10:28

@Easter Frisian: Genau, da sieht man schon gut, dass keines der Module gefunden wird. Pyinstaller muss ebenfalls in dem venv installiert sein.
Antworten