zunächst: Ja ich habe mich erst versucht mein Problem selbst zu lösen und mich der Foren-Suche bedient mit folgenden Tags: +pyinstaller (gross|gross|groesse|dateigroesse) ohne direkt auf einen Hinweis gestoßen zu sien. Aber so richtig zufrieden bin ich mit meiner "Lösung" noch nicht, daher würde ich mich über professionellen Rat sehr freuen.
Ich habe ein Programm auf pyqt Basis geschrieben welches Pdf Dateien zusammenführt. Es hat eine einfach GUI die nur aus einem mainwindow mit fixer Größe besteht. Ich habe bereits in PyCharm eine virtuelle Umgebung eingerichtet und zur Kompilierung mittels pyinstaller außerdem upx dazu genommen, was hinsichlich der Dateigröße der exe (42 MB) jedoch fast nichts gebracht hat. Möglicherweise mache ich in Zusammenhang mit der venv in PyCharm und den Packages irgendetwas falsch. Ich kann nicht glauben dass es für ein so einfaches Programm nicht auch deutlich kleiner gehen sollte / müsste zumal an anderer Stelle in diesem Forum beschrieben wurde, dass eine *exe mit Pyqt so um die 20 MB groß sein sollte.Da pikepdf jetzt nicht das Riesenmodul ist müsste ich dann ja auch irgendwo / -wie dahinkommen?
Meine Imports aus dem Hauptprogramm:
Code: Alles auswählen
import sys
import os.path
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QFileDialog
from pdfmerger_ui import Ui_MainWindow
from pathlib import Path
from pikepdf import Pdf, PasswordError, PdfError
Code: Alles auswählen
from PyQt5 import QtCore, QtGui, QtWidgets
from os import path
PyQt5~=5.15.4
pikepdf~=3.1.0
pyinstaller~=4.5.1
Meine spec Datei sieht wie folgt aus:
Code: Alles auswählen
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['C:\\Users\\PZ\\PycharmProjects\\pythonProject8\\venv'],
binaries=[],
datas=[('Pfeiloben.png', '.'),('Pfeilunten.png', '.'),('Programmicon.png', '.')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
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='Pdf-Merger',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None , icon='Programmicon.ico')
pyinstaller -w -F -n Pdf-Merger -i Programmicon.ico main.py (= windowed, one-file)
Anschließend habe ich noch...
pyinstaller --upx-dir C:\Users\PZ\PycharmProjects\pythonProject8\venv\Files Pdf-Merger.spec
...gemacht und das Endergebnis sind eben 42 MB als Ausgabedatei

Wo liegt mein Fehler

Gruß
Py'insight