Version 1.6.6: Versionsanzeige im Info-Dialog bei PyInstaller-Bundle gefixt
Im PyInstaller-Bundle fehlten .dist-info-Metadaten, wodurch importlib.metadata keine Paketversionen liefern konnte. Lösung: DocuMentor.spec erzeugt beim Build einen Versions-Snapshot (versions.json) der ins Bundle eingebettet wird. license_parser.py liest diesen Snapshot im Bundle-Modus statt importlib.metadata. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+24
-1
@@ -2,8 +2,10 @@
|
||||
Parser für THIRD_PARTY_LICENSES.txt.
|
||||
|
||||
Extrahiert strukturierte Lizenzinformationen und ergänzt sie
|
||||
mit den tatsächlich installierten Paketversionen via importlib.metadata.
|
||||
mit den tatsächlich installierten Paketversionen via importlib.metadata
|
||||
oder (im PyInstaller-Bundle) aus der mitgebündelten versions.json.
|
||||
"""
|
||||
import json
|
||||
import logging
|
||||
import re
|
||||
import sys
|
||||
@@ -71,8 +73,29 @@ def _normalize_package_name(display_name: str) -> str:
|
||||
return display_name.lower().split("(")[0].strip()
|
||||
|
||||
|
||||
_bundled_versions: dict[str, str] | None = None
|
||||
|
||||
|
||||
def _load_bundled_versions() -> dict[str, str]:
|
||||
"""Lädt den Versions-Snapshot aus der mitgebündelten versions.json (nur im PyInstaller-Bundle)."""
|
||||
global _bundled_versions
|
||||
if _bundled_versions is None:
|
||||
if hasattr(sys, "_MEIPASS"):
|
||||
versions_file = Path(sys._MEIPASS) / "versions.json" # type: ignore[attr-defined]
|
||||
if versions_file.exists():
|
||||
_bundled_versions = json.loads(versions_file.read_text(encoding="utf-8"))
|
||||
else:
|
||||
_bundled_versions = {}
|
||||
else:
|
||||
_bundled_versions = {}
|
||||
return _bundled_versions
|
||||
|
||||
|
||||
def _get_installed_version(package_name: str) -> str:
|
||||
"""Ermittelt die installierte Version eines Pakets."""
|
||||
bundled = _load_bundled_versions()
|
||||
if bundled:
|
||||
return bundled.get(package_name.lower(), "")
|
||||
try:
|
||||
return version(package_name)
|
||||
except PackageNotFoundError:
|
||||
|
||||
Reference in New Issue
Block a user