diff --git a/CHANGELOG.md b/CHANGELOG.md index 51517ac..bae3645 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ## pyUpload (TKInter-Version 1.0) +- **2025-05-07 - v1.2.1** + - **Geändert:** + - [x] `main.py` übergibt beim Neustart unter Linux jetzt einen **absoluten Pfad**, um Doppelpunkte wie `app/app/main.py` zu vermeiden. + - [x] `start.pyw` berücksichtigt nun `venv`-Interpreter korrekt, wenn vorhanden, sonst fallback auf `sys.executable`. + - [x] Erkennung von fehlendem `ensurepip`, mit Hinweis zur Installation von `python3-venv` bei Bedarf. + - [x] Neue Warnung, wenn `tkinter` fehlt – ohne Abbruch, Upload-Server läuft dennoch im CLI-Modus weiter. + - [x] README.md ergänzt um Setup-Hinweise für Linux bzgl. `python3-venv` und `python3-tk`. + +--- + - **2025-04-28 - v1.2.0** - **Geändert:** - [x] `main.py` prüft nun zusätzlich, ob die virtuelle Umgebung auch funktioniert und nicht nur ob sie lediglich vorhanden ist. diff --git a/README.md b/README.md index 7144bf2..6ab93f1 100644 --- a/README.md +++ b/README.md @@ -19,15 +19,15 @@ Die neue Version mit Flask-Backend wird **bald** verfügbar sein unter: - [pyUpload – Sicherer Datei-Upload-Server über HTTPS (lokal \& offline)](#pyupload--sicherer-datei-upload-server-über-https-lokal--offline) - [🛠 Features](#-features) - [🚀 Schnellstart](#-schnellstart) - - [▶️ Für Windows:](#️-für-windows) - - [🐧 Für Linux / macOS:](#-für-linux--macos) + - [▶️ Für Windows](#️-für-windows) + - [🐧 Für Linux / macOS](#-für-linux--macos) - [🧩 Kommandozeilenoptionen](#-kommandozeilenoptionen) - [🌐 Zugriff im Browser](#-zugriff-im-browser) - [📁 Logs \& Uploads](#-logs--uploads) - [🔐 Hinweis zur SSL-Zertifikatswarnung](#-hinweis-zur-ssl-zertifikatswarnung) - [💡 Ideen für zukünftige Entwicklungen](#-ideen-für-zukünftige-entwicklungen) - [🐛 Bekannte Bugs](#-bekannte-bugs) - - [## 👨‍💻 Autor und Beteiligte](#--autor-und-beteiligte) + - [👨‍💻 Autor und Beteiligte](#-autor-und-beteiligte) - [📝 Lizenz](#-lizenz) --- @@ -57,7 +57,7 @@ Sie ist vollständig lokal lauffähig – ganz ohne Installation von externen To ## 🚀 Schnellstart -### ▶️ Für Windows: +### ▶️ Für Windows 1. Lade das Projekt herunter oder klone es: @@ -94,7 +94,7 @@ Sie ist vollständig lokal lauffähig – ganz ohne Installation von externen To Ich empfehle, eine Verknüpfung der `start.pyw` z. B. auf dem Desktop zu erstellen -### 🐧 Für Linux / macOS: +### 🐧 Für Linux / macOS 1. Stelle sicher, dass Python 3.8+ installiert ist: @@ -102,6 +102,20 @@ Sie ist vollständig lokal lauffähig – ganz ohne Installation von externen To python3 --version ``` + Stelle sicher, dass die nötigen Systempakete vorhanden sind: + + ```bash + sudo apt install python3-venv python3-tk + ``` + + Bei neueren Systemen mit z. B. Python 3.12: + + ```bash + sudo apt install python3.12-venv python3.12-tk + ``` + + Dies trifft nicht bei allen Systemen zu, bei Ubuntu z.B muss TKinter händisch leider nachinstalliert werden. + 2. Mache das Startscript ausführbar: ```bash @@ -189,11 +203,18 @@ Wichtig dabei ist es darauf zu achten, das tatsächlich auch https verwendet wir Damit dein Browser diese Warnung dauerhaft vermeidet, müssen die Zertifikate zu deiner verwendeten Domain passen. Da das in lokalen oder testnahen Umgebungen in der Regel nicht der Fall ist, lässt sich diese Warnung meist nicht vermeiden. ->💡 **Wichtig zu wissen:** +> **Wichtig zu wissen:** Die Verbindung ist trotzdem Ende-zu-Ende verschlüsselt. Die Schlüssel werden bei jedem Start lokal neu generiert – direkt auf deinem Rechner. Technisch ist die Verbindung also sicher. Dein Browser vertraut dem Zertifikat lediglich nicht, weil es nicht von einer offiziellen Zertifizierungsstelle stammt, sondern lokal erzeugt wurde. + TKinter unter Linux: + +> **Hinweis für Linux-Benutzer:** + Falls die GUI nicht erscheint und stattdessen eine Warnung, wie `ModuleNotFoundError: No module named 'tkinter'`, liegt das daran, + dass `tkinter` unter Linux separat installiert werden muss. + Siehe Abschnitt [🐧 Für Linux / macOS](#-für-linux--macos) für Details. + [🔝](#-inhalt-der-readme) --- diff --git a/VERSION b/VERSION index 26aaba0..6085e94 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.0 +1.2.1 diff --git a/app/main.py b/app/main.py index 35dfa16..cec704a 100644 --- a/app/main.py +++ b/app/main.py @@ -2,7 +2,7 @@ # © 2025 Adam Skotarczak (adam@skotarczak.net) # -# Version 1.0.2 (28.04.2025 - virtuelle Umgebung korrekt aktiviert) +# Version 1.2.1 (07.05.2025 - Linux Test und Anpassungen im Bootstap) # Manuell in z.B. VS-Code: .\app\.venv\Scripts\activate # # Original unter: @@ -38,7 +38,9 @@ if (sys.prefix == sys.base_prefix and sys.executable != VENV_PYTHON) or not os.p subprocess.Popen([VENV_PYTHON] + sys.argv, creationflags=subprocess.CREATE_NEW_CONSOLE) sys.exit(0) else: - os.execv(VENV_PYTHON, [VENV_PYTHON] + sys.argv) + main_script = os.path.join(BASE_DIR, "main.py") + os.execv(VENV_PYTHON, [VENV_PYTHON, main_script] + sys.argv[1:]) + sys.exit(0) # Wir sind jetzt sicher in der richtigen Umgebung → Rest des Programms geht hier weiter: @@ -259,7 +261,11 @@ def run_server_with_gui(port): import qrcode import webbrowser from PIL import Image, ImageTk - import tkinter as tk + try: + import tkinter as tk + except ImportError: + print("⚠ Hinweis: tkinter ist nicht installiert. Für die GUI benötigst du:") + print(" sudo apt install python3-tk") httpd = create_https_server(port) server_ip = get_server_ip() diff --git a/start.pyw b/start.pyw old mode 100644 new mode 100755