From 22e97965939370f01c5a71b56f5e1ae6d566d965 Mon Sep 17 00:00:00 2001 From: Samer Ayadi Date: Tue, 20 Oct 2026 14:01:33 +0200 Subject: [PATCH] Installtools und Liste der python packages an die neuere Arte der Python installation angepasst --- .vscode/settings.json | 2 +- CLAUDE.md | 1 - bin/getexdraw.bat | 7 ++++++- bin/install_py.bat | 17 ++++++++++++----- bin/install_py.sh | 13 ++++++++----- bin/setenv.bat | 3 ++- lib/requirements.txt | 11 ----------- lib/run_tests.py | 5 ++++- 8 files changed, 33 insertions(+), 26 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 5b30f74..c77f538 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { - "python.languageServer": "None", + "python.languageServer": "Default", "cSpell.words": [ "DXFATTRIBS", "ezdxf" diff --git a/CLAUDE.md b/CLAUDE.md index f92e83e..0ca7e6b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -245,7 +245,6 @@ Key Python packages (see [lib/requirements.txt](lib/requirements.txt)): - `pandas` - Data manipulation - `matplotlib` - Graph visualization - `dacite` - Dataclass conversion utilities -- `PyMuPDF` - PDF processing capabilities - `pillow` - Image processing (flag/icon generation) - `pytest` - Testing framework diff --git a/bin/getexdraw.bat b/bin/getexdraw.bat index 60e7ae9..1065cc7 100644 --- a/bin/getexdraw.bat +++ b/bin/getexdraw.bat @@ -19,6 +19,7 @@ REM Namen der Ergebnisdateien set ERROR_DOUBLE=%FILENAME%_errors.json set EXCEL_RES=%FILENAME%_cables.xlsx set DXF_RES=%FILENAME%_cables.dxf +set BOM_RES=%FILENAME%_BOM.xlsx if exist "%~dp0_setenv.bat" ( echo Lade lokale Umgebungseinstellungen aus _setenv.bat... @@ -63,8 +64,12 @@ if not exist "%PROJECT_WORK%\%EXCEL_RES%" ( ) echo. -move %PROJECT_WORK%\%FILENAME%_* %TARGET_DIR% +REM nur die eigenen Ergebnisdateien verschieben (kein Wildcard, sonst werden z.B. bei "easy" auch "easy_sps_*" mitgenommen) +for %%f in (%JSON_POS% %JSON_TODRAW% %DXF_RES% %EXCEL_RES% %BOM_RES% %ERROR_DOUBLE%) do ( + if exist "%PROJECT_WORK%\%%f" move "%PROJECT_WORK%\%%f" "%TARGET_DIR%" +) pause +goto :eof :usage diff --git a/bin/install_py.bat b/bin/install_py.bat index ca9b59f..96a1d82 100644 --- a/bin/install_py.bat +++ b/bin/install_py.bat @@ -1,14 +1,21 @@ -call setenv.bat +call "%~dp0setenv.bat" +if "%PROJECT%"=="" ( + ECHO FEHLER: PROJECT ist nicht gesetzt! + exit /b 1 +) +REM Python 3.12: numpy 1.26 / pandas 2.1 aus requirements.txt gibt es nicht fuer neuere Versionen if not exist %PROJECT%\.venv ( ECHO Initialisiere Python virtual environment... - py -m venv %PROJECT%\.venv --upgrade-deps + uv venv %PROJECT%\.venv --python 3.12 || exit /b 1 ECHO Erfolgreich. - call %PROJECT%\.venv\Scripts\activate.bat ECHO Installiere erforderliche Python Packages... - pip install -r %PROJECT_LIB%/requirements.txt -q + uv pip install --python %PROJECT%\.venv -r %PROJECT_LIB%/requirements.txt -q || ( + ECHO FEHLER: Installation fehlgeschlagen, entferne .venv + rmdir /s /q %PROJECT%\.venv + exit /b 1 + ) ECHO Erfolgreich - deactivate ) ELSE ( ECHO Erforderliche Python Packages bereits installiert! diff --git a/bin/install_py.sh b/bin/install_py.sh index 925855a..c3318ed 100755 --- a/bin/install_py.sh +++ b/bin/install_py.sh @@ -2,16 +2,19 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/setenv.sh" +# Python 3.12: numpy 1.26 / pandas 2.1 aus requirements.txt gibt es nicht fuer neuere Versionen if [ ! -d "$PROJECT/.venv" ]; then echo "Initialisiere Python virtual environment..." - python3 -m venv "$PROJECT/.venv" --upgrade-deps + uv venv "$PROJECT/.venv" --python 3.12 || exit 1 echo "Erfolgreich." - - source "$PROJECT/.venv/bin/activate" + echo "Installiere erforderliche Python Packages..." - pip install -r "$PROJECT_LIB/requirements.txt" -q + if ! uv pip install --python "$PROJECT/.venv" -r "$PROJECT_LIB/requirements.txt" -q; then + echo "FEHLER: Installation fehlgeschlagen, entferne .venv" + rm -rf "$PROJECT/.venv" + exit 1 + fi echo "Erfolgreich" - deactivate else echo "Erforderliche Python Packages bereits installiert!" fi diff --git a/bin/setenv.bat b/bin/setenv.bat index 6f2d428..ccb37fb 100644 --- a/bin/setenv.bat +++ b/bin/setenv.bat @@ -25,7 +25,8 @@ if not exist %PROJECT%\translation mkdir %PROJECT%\translation if not exist %PROJECT%\logs mkdir %PROJECT%\logs set PROJECT_IO_RESULTS=Z:\Automatisierung\Konvertierungstools\4_io-Konvertierer -set PROJECT_BOM_RESULTS=Z:\Automatisierung\Konvertierungstools\3_Kabellaengen-Konvertierer +REM Kann vorab gesetzt werden (z.B. von run_tests.py), damit Testergebnisse in work bleiben +if not defined PROJECT_BOM_RESULTS set PROJECT_BOM_RESULTS=Z:\Automatisierung\Konvertierungstools\3_Kabellaengen-Konvertierer set INSTALL_DIR="%ONEDRIVE%\Desktop\Kabeltool" if exist "%~dp0_setenv.bat" ( diff --git a/lib/requirements.txt b/lib/requirements.txt index 3f27af4..212ebd6 100644 --- a/lib/requirements.txt +++ b/lib/requirements.txt @@ -1,10 +1,7 @@ -build==1.2.2.post1 -click==8.1.8 colorama==0.4.6 contourpy==1.3.1 cycler==0.12.1 dacite==1.9.2 -dataclasses==0.6 et-xmlfile==1.1.0 ezdxf==1.4.1 fonttools==4.57.0 @@ -17,21 +14,13 @@ openpyxl==3.1.2 packaging==24.2 pandas==2.1.1 pillow==11.1.0 -pip-tools==7.4.1 pluggy==1.6.0 Pygments==2.19.2 -PyMuPDF==1.25.5 pyparsing==3.2.3 -pyproject_hooks==1.2.0 pytest==9.0.2 python-dateutil==2.8.2 pytz==2023.3.post1 -setuptools==80.0.0 shapely==2.1.0 -shiboken6==6.9.0 six==1.16.0 -snakeviz==2.2.2 -tornado==6.5.1 typing_extensions==4.13.1 tzdata==2023.3 -wheel==0.45.1 diff --git a/lib/run_tests.py b/lib/run_tests.py index 66b96e0..fbf236c 100644 --- a/lib/run_tests.py +++ b/lib/run_tests.py @@ -74,8 +74,11 @@ class TestRunner: # Execute getexdraw.bat with automated input to handle pause cmd = [str(self.getexdraw_bat), str(dxf_file)] + # Ergebnisse in work statt im produktiven Netzlaufwerk ablegen + env = os.environ.copy() + env['PROJECT_BOM_RESULTS'] = str(self.work_dir) # Send newline to handle the pause command - result = subprocess.run(cmd, capture_output=True, text=True, shell=True, input="\n") + result = subprocess.run(cmd, capture_output=True, text=True, shell=True, input="\n", env=env) # Check if the expected output files were created instead of relying on return code # The batch script always exits with code 1 due to interactive design, but files are created