Communitygithub.com

Generating Python Installer (Professionelle Windows-Installatio…

Erstellen Sie professionelle Windows-Installer mit Nuitka-Kompilierung, Distribution-Slimming und Inno Setup-Verpackung. Ideal zum Ausliefern kleinster, schnellstartender Installer.

Was ist Generating Python Installer (Professionelle Windows-Installatio…?

Diese Fertigkeit ist ein professioneller Experte für die kommerzielle Auslieferung von Python-Anwendungen auf Windows. Das Kernkonzept ist der Ansatz "Nuitka-Ordner-Modus (dist) + Inno Setup-Verpackung": Statt einer einzelnen EXE-Datei wird ein vollständiger `dist`-Ordner erstellt, der dann mit Inno Setup in einen Installer verpackt wird. Der Fokus liegt auf extremen Optimierungen: Minimierung des Installervolumens (durch modulare Exklusion, Entfernung von Debug-Symbolen, Caches und Testdateien im `dist`-Ordner) und Maximierung der Startgeschwindigkeit (durch LTO und Entfernen von Konsolenfenstern). Die Fertigkeit führt den Benutzer Schritt für Schritt durch den gesamten Workflow: Parameterabfrage, Quellcodeprüfung, Nuitka-Kompilierung mit spezifischen Plugins, `dist`-Schlankheitskur (via PowerShell-Skript) und schließlich die Paketierung mit Inno Setup (mit LZMA2-Ultra-Kompression und sauberer Deinstallation). Sie unterstützt Tkinter, PyQt5 und PySide2 und enthält detaillierte Benchmarks, Skriptvorlagen und Fallbeispiele aus der Praxis (z. B. ein 323 MB Projekt mit OpenCV und Playwright, das optimiert werden kann). Ein wichtiger Bestandteil ist die Analyse der DLL-Abhängigkeiten und die Entscheidung zwischen 32-Bit- und 64-Bit-Python, um das beste Größen-Leistungs-Verhältnis zu erzielen. Die Fertigkeit ist für Entwickler gedacht, die ihre Python-Desktop-Anwendungen professionell, schnell und mit minimaler Dateigröße ausliefern müssen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/tree/main/skills/generating-python-installer

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Python-Installer erstellen (Professionelle Qualität)

Sie sind ein Experte für die kommerzielle Bereitstellung von Python-Anwendungen unter Windows. Ihr Ziel ist der kleinste, schnellststartende, sauberste Windows-Installer. Der Kernansatz ist "Nuitka-Ordner-Modus (dist) + Inno Setup-Verpackung" – keine Einzeldatei-Builds, kein störendes Konsolenfenster.

Wann aktivieren

Aktivieren Sie diese Fertigkeit, wenn der Benutzer explizit nach fortgeschrittener Python-Paketierung oder Größen-/Startgeschwindigkeits-Optimierung unter Windows fragt:

  • Nuitka-Extrem-/Professionelle Kompilierung, kleinste Größe oder schnellster Start
  • dist-Ordner-Verschlankung, DLL-Fußabdruck-Analyse, 32-Bit vs. 64-Bit Größenabwägungen
  • Inno Setup-Verpackung mit vollständigen Metadaten und sauberer, rückstandsfreier Deinstallation

Diese Fertigkeit zielt auf fortgeschrittene Größen-/Startoptimierung – nicht auf die einfache Umwandlung von Skript in EXE.

Wie es funktioniert

  1. Build-Parameter bestätigen – App-Name, Version, Herausgeber, EXE-Name, Quell-/Ausgabeverzeichnisse, Symbol. Niemals automatisch ausfüllen; den Benutzer fragen.
  2. Quell-Build überprüfen – Konsole deaktiviert, LTO aktiviert, VC++-Laufzeit vorhanden.
  3. Mit Nuitka kompilieren unter Verwendung der Modul-Ausschluss- und Plugin-Strategie unten.
  4. Den dist-Ordner verschlanken – Debug-Symbole, Caches, Tests und Dokumentation entfernen, mit Schutz für laufzeitnotwendige Metadaten.
  5. DLLs analysieren, um die größten Abhängigkeiten zu finden und zu trimmen.
  6. Mit Inno Setup verpacken – LZMA2-Ultra-Kompression, vollständige Metadaten, rückstandsfreie Deinstallation und eine architekturgleiche VC++-Redistributable.

Beispiele

  • "用 Nuitka 把这个 PySide2 项目打成最小体积的商业安装包" → führen Sie den vollständigen Workflow aus: 32-Bit empfehlen, WebEngine/3D/Charts ausschließen, dist verschlanken, mit Inno Setup verpacken.
  • "我的 exe 有 400 MB,怎么瘦身到一半" → DLLs analysieren, auf opencv-python-headless umsteigen, opengl32sw entfernen, dist-Verschlankung anwenden.
  • "安装后在纯净系统打不开" → sicherstellen, dass die passende VC++-Redistributable im Inno Setup-Skript enthalten ist.

Kernprinzip

Halten Sie am "Nuitka-Ordner-Modus (dist) + Inno Setup-Verpackung"-Ansatz fest. Vermeiden Sie Einzeldatei-Versionen. Vermeiden Sie schwarze Konsolenfenster.


Praxis-Referenzfall (Produktionsreife PySide2-Desktop-Anwendung, 323 MB, mit OpenCV / Playwright)

Projektübersicht

  • Gesamtgröße: 323 MB
  • Packtool: PyInstaller 4.7 (32-Bit)
  • Hauptabhängigkeiten: PySide2 (22,52 MB), OpenCV (62,38 MB), Playwright (76,74 MB)
  • Python-Version: Python 3.8 (32-Bit)
  • Anzahl DLLs: 71, insgesamt 93,23 MB

Wichtige Optimierungsstrategien

  1. BESTANDEN: 32-Bit Python verwenden → Volumenreduktion um 20-30%
  2. BESTANDEN: base_library.zip Standardbibliothek komprimieren → 0,74 MB
  3. BESTANDEN: Module gezielt ausschließen → kein pytest/unittest/setuptools
  4. BESTANDEN: Qt-Plugins reduzieren → nur notwendige Plugins behalten

Volumenverteilung

KomponenteVolumenAnteilOptimierungsvorschlag
playwright76,74 MB23,8%Kann bei Bedarf entfernt werden
OpenCV62,38 MB19,3%opencv-python-headless verwenden
PySide222,52 MB7,0%WebEngine/3D/Charts ausschließen
Andere Abhängigkeiten161,36 MB49,9%-

Erwartete Ergebnisvergleiche

ProjekttypNuitka OriginalOptimiertReferenzprojekt gemessen
Tkinter + Standardbibliothek150-250 MB80-120 MB-
PyQt/PySide200-400 MB120-250 MB323 MB (mit OpenCV etc.)
Mit numpy/pandas300-600 MB180-350 MB-

Kern-Workflow - WARNUNG: Streng befolgen

Wenn der Benutzer eine Paketierung anfordert, gehen Sie wie folgt vor:

Schritt 1: Parameter-Zwangsbestätigung (FEHLER: Keine Standardwerte verwenden)

WARNUNG: Wichtige Regel: Alle folgenden Parameter müssen einzeln beim Benutzer erfragt werden. Das automatische Ausfüllen oder die Verwendung von Standardwerten ist verboten!

Sie müssen den Benutzer nach den folgenden Informationen fragen und diese bestätigen lassen (warten Sie auf eine eindeutige Antwort, bevor Sie fortfahren):

ParameterBeschreibungBeispiel
Softwarename (App Name)Anzeigename der Software红墨批注
Version (Version)Semantische Versionsnummer1.0.0
Herausgeber/Firmenname (Publisher)Im Bedienfeld angezeigter HerausgeberYourCompany
Hauptprogramm (Exe Name)Name der Haupt-EXE-DateiRedInk.exe
Quellpfad (Source Dir)Absoluter Pfad zum Nuitka dist-OrdnerD:\project\dist
Ausgabepfad (Output Dir)Speicherort des InstallersD:\project\output
Symbolpfad (Icon Path)Absoluter Pfad zur .ico-Datei (optional, aber empfohlen)D:\project\icon.ico
Website-URL (URL)Optional, für den Link im Bedienfeldhttps://example.com

Abfragevorlage:

"Bitte geben Sie die folgenden Paketierungsparameter an. Ich benötige Ihre Bestätigung für jeden einzelnen:

  1. Softwarename:
  2. Version:
  3. Herausgeber/Firmenname:
  4. Hauptprogramm-Dateiname (z.B. xxx.exe):
  5. Quellpfad (Nuitka dist-Ordner):
  6. Ausgabepfad (Speicherort des Installers):
  7. Symbolpfad (.ico-Datei, optional):
  8. Website-URL (optional):

Bitte füllen Sie jeden Punkt aus oder antworten Sie mit "Überspringen", um einen leeren Wert zu verwenden."

Schritt 2: Quellcode-Qualitäts- und Build-Überprüfung (Kritisch) Bevor Code generiert wird, müssen Sie dem Benutzer die folgenden kritischen Bestätigungen mitteilen (da Inno Setup nur ein Packtool ist und die Laufzeiteigenschaften des Programms nicht ändern kann):

"WARNUNG: Build-Parameter-Prüfung:

  1. Kein Konsolenfenster: Bitte bestätigen Sie, dass Ihr dist-Ordner mit nuitka --windows-console-mode=disable kompiliert wurde (sonst erscheint nach der Installation ein schwarzes Fenster).
  2. Hohe Leistung: Bitte bestätigen Sie, dass --lto=yes verwendet wurde (sonst ist die Startgeschwindigkeit möglicherweise nicht optimal).
  3. Laufzeitbibliothek: Bitte stellen Sie sicher, dass der dist-Ordner die notwendigen VC++-Laufzeitbibliotheken enthält, damit die Anwendung auch auf einem reinen System läuft.

Bestätigen Sie, dass die Quelldateien bereit sind, mit 'Bestätigt', oder kompilieren Sie sie bitte zuerst neu."

Schritt 3: Code generieren Nach der Bestätigung des Benutzers geben Sie den Code mit vollständigen Metadaten und Deinstallationssymbol-Reparatur aus.


Nuitka Extrem-Optimierungskompilierung (basierend auf Referenzprojekt-Erfahrung)

I. 32-Bit vs. 64-Bit Auswahlstrategie

Grund für die Verwendung von 32-Bit Python im Referenzprojekt:

Komponente64-Bit Volumen32-Bit VolumenEinsparung
python3x.dll~4,5 MB~3,8 MB15%
Qt5Core.dll~8 MB~5 MB37%
numpy~30 MB~20 MB33%
GesamtBasislinie-20~30%-

Empfohlene Bedingungen für 32-Bit:

  • BESTANDEN: Speicherverbrauch des Programms < 2 GB
  • BESTANDEN: Keine Verarbeitung sehr großer Dateien (< 2 GB)
  • BESTANDEN: Zielbenutzer sind normale Bürocomputer

32-Bit Kompilierungsmethode:

# 1. 32-Bit Python installieren (kann neben 64-Bit existieren)
# Download: https://www.python.org/downloads/windows/

# 2. Abhängigkeiten mit 32-Bit Python installieren
py -3.12-32 -m pip install -r requirements.txt

# 3. Mit 32-Bit Python kompilieren
py -3.12-32 -m nuitka --standalone ...deine-parameter

II. Modul-Ausschlussliste (vom Referenzprojekt verifiziert)

Sichere Ausschlussliste (wird zur Laufzeit nicht benötigt):

unittest,test,pytest,_pytest,doctest,pdb,pdbpp,
setuptools,pip,distutils,pkg_resources,
email.mime,http.server,xmlrpc,pydoc

Erwarteter Effekt: 30-50 MB Einsparung

III. GUI-Framework-spezifische Optimierungen

Tkinder Extrem-Optimierung (Empfohlen, am leichtesten)

nuitka --standalone --windows-console-mode=disable ^
    --lto=yes ^
    --jobs=8 ^
    --enable-plugin=tk-inter ^
    --enable-plugin=anti-bloat ^
    --noinclude-pytest-mode=nofollow ^
    --noinclude-setuptools-mode=nofollow ^
    --nofollow-import-to=unittest,test,pytest,_pytest,doctest,pdb,pdbpp ^
    --nofollow-import-to=setuptools,pip,distutils,pkg_resources ^
    --nofollow-import-to=email.mime,http.server,xmlrpc,pydoc ^
    --python-flag=no_docstrings ^
    --output-dir=dist ^
    --windows-icon-from-ico=icon.ico ^
    --remove-output ^
    main.py

Erwartetes Volumen: 80-120 MB (optimiert)

PyQt5 / PySide2 Optimierung

nuitka --standalone --windows-console-mode=disable ^
    --lto=yes ^
    --jobs=8 ^
    --enable-plugin=pyqt5 ^
    --enable-plugin=anti-bloat ^
    --noinclude-pytest-mode=nofollow ^
    --noinclude-setuptools-mode=nofollow ^
    --nofollow-import-to=unittest,test,pytest,_pytest,doctest,pdb ^
    --nofollow-import-to=setuptools,pip,distutils,pkg_resources ^
    --nofollow-import-to=PyQt5.QtWebEngine,PyQt5.QtWebEngineWidgets ^
    --nofollow-import-to=PyQt5.Qt3D,PyQt5.QtCharts ^
    --python-flag=no_docstrings ^
    --include-qt-plugins=sensible,styles,platforms ^
    --output-dir=dist ^
    --windows-icon-from-ico=icon.ico ^
    --remove-output ^
    main.py

Erwartetes Volumen: 120-250 MB (optimiert)

IV. One-Click-Kompilierungs-Skriptvorlage

Speichern als build_optimized.bat (im Projektstammverzeichnis):

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ========================================
echo Nuitka Extrem-Optimierungskompilierung (Referenzprojekt)
echo ========================================

REM === Konfigurationsbereich (An Ihre Werte anpassen) ===
set APP_NAME=IhrSoftwarename
set MAIN_FILE=main.py
set ICON_FILE=icon.ico

REM === Automatische CPU-Kern-Erkennung ===
REM Verwendet die Windows-Umgebungsvariable (wmic wurde in Win11 22H2+ entfernt; wenn nicht erkannt, wird --jobs=0 verwendet -> Single-Thread)
set CPU_CORES=%NUMBER_OF_PROCESSORS%
if not defined CPU_CORES set CPU_CORES=4
set /a BUILD_JOBS=%CPU_CORES%

REM === Modul-Ausschlussliste des Referenzprojekts ===
set EXCLUDE_MODULES=unittest,test,pytest,_pytest,doctest,pdb,pdbpp
set EXCLUDE_MODULES=%EXCLUDE_MODULES%,setuptools,pip,distutils,pkg_resources
set EXCLUDE_MODULES=%EXCLUDE_MODULES%,email.mime,http.server,xmlrpc,pydoc

echo.
echo [1/4] Alte Builds bereinigen...
if exist dist rd /s /q dist
if exist build rd /s /q build

echo.
echo [2/4] Nuitka-Kompilierung läuft (Optimierungsstrategien des Referenzprojekts)...
echo - CPU-Kerne: %CPU_CORES% (verwendet %BUILD_JOBS% Threads)
echo - Modulausschlüsse: %EXCLUDE_MODULES%
echo.

nuitka --standalone ^
    --windows-console-mode=disable ^
    --lto=yes ^
    --jobs=%BUILD_JOBS% ^
    --enable-plugin=anti-bloat ^
    --enable-plugin=tk-inter ^
    --noinclude-pytest-mode=nofollow ^
    --noinclude-setuptools-mode=nofollow ^
    --nofollow-import-to=%EXCLUDE_MODULES% ^
    --python-flag=no_docstrings ^
    --output-dir=dist ^
    --windows-icon-from-ico=%ICON_FILE% ^
    --remove-output ^
    %MAIN_FILE%

if %errorlevel% neq 0 (
    echo.
    echo [FEHLER] Kompilierung fehlgeschlagen!
    pause
    exit /b 1
)

echo.
echo [3/4] Kompilierungsergebnis erfassen...
for /f %%a in ('powershell -NoProfile -Command "(Get-ChildItem -LiteralPath 'dist\%APP_NAME%.dist' -Recurse -File | Measure-Object -Property Length -Sum).Sum"') do set TOTAL_SIZE=%%a
set TOTAL_SIZE=%TOTAL_SIZE:,=%
set /a SIZE_MB=%TOTAL_SIZE% / 1048576
echo - Volumen nach Kompilierung: %SIZE_MB% MB

echo.
echo [4/4] Schlankheitsbereinigung durchführen (Strategie des Referenzprojekts)...
powershell -ExecutionPolicy Bypass -File slim_dist.ps1 -DistPath "dist\%APP_NAME%.dist"

echo.
echo ========================================
echo Kompilierung abgeschlossen!
echo ========================================
pause

V. dist-Schlankheitsskript (Bereinigung auf Referenzprojekt-Niveau)

Speichern als slim_dist.ps1 (im selben Verzeichnis wie build_optimized.bat):

param(
    [string]$DistPath
)

$ErrorActionPreference = "Continue"  # Fehler nicht stillschweigend ignorieren: Löschfehler werden angezeigt, um falsche Erfolge zu vermeiden

Write-Host "`n========================================

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

Verwandte Skills