Skip to content

Commit 0ec2c7f

Browse files
committed
Merge branch 'initial_model_setup' of https://github.com/RSGInc/SimOR into initial_model_setup
2 parents 7a29b39 + 7b90051 commit 0ec2c7f

1 file changed

Lines changed: 72 additions & 10 deletions

File tree

setup_environment.bat

Lines changed: 72 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ SETLOCAL EnableDelayedExpansion
1616
:: User-configurable settings
1717
:: ---------------------------------------------------------------------------
1818
:: Set this to the folder containing Visum's bundled Python interpreter.
19-
:: Example: C:\Program Files\PTV Vision\PTV Visum 2026\Exe\Junction_Preview\Python
20-
SET "VISUM_PYTHON_DIR=C:\Program Files\PTV Vision\PTV Visum 2026\Exe\Junction_Preview\Python"
19+
:: IMPORTANT: Do not include a trailing backslash at the end of this path.
20+
:: Example: C:\Program Files\PTV Vision\PTV Visum 2026\Exe\Python
21+
SET "VISUM_PYTHON_DIR=C:\Program Files\PTV Vision\PTV Visum 2026\Exe\Python"
2122

2223
:: Set to Y to clone and install sandag_parking (oregon_metro branch), N to skip
2324
:: (optional dependency, only needed if you want to regenerate parking cost data)
@@ -158,20 +159,79 @@ ECHO.
158159
:: ============================================================================
159160
ECHO [3/5] Setting up Visum Python packages...
160161

161-
IF NOT EXIST "%VISUM_PYTHON_DIR%\python.exe" (
162+
SET "VISUM_PACKAGE_STATUS=not checked"
163+
SET "VISUM_PYTHON_EXE=%VISUM_PYTHON_DIR%\python.exe"
164+
165+
IF NOT EXIST "%VISUM_PYTHON_EXE%" (
162166
ECHO WARNING: Visum Python not found at:
163167
ECHO %VISUM_PYTHON_DIR%
164168
ECHO Please edit VISUM_PYTHON_DIR in this script to point to your Visum 2026 Python folder.
165-
ECHO Skipping Visum package installation.
166-
) ELSE (
167-
ECHO Installing tables, openmatrix, pyyaml into Visum Python...
168-
"%VISUM_PYTHON_DIR%\python.exe" -m pip install tables openmatrix pyyaml --quiet
169+
SET "VISUM_PACKAGE_STATUS=skipped (Visum Python not found)"
170+
GOTO :VISUM_DONE
171+
)
172+
173+
:: Resolve site-packages path via temp file (handles spaces in paths)
174+
SET "VISUM_SITE_PACKAGES="
175+
SET "VISUM_SITE_FILE=%TEMP%\simor_visum_site_packages.txt"
176+
"%VISUM_PYTHON_EXE%" -c "import sysconfig; print(sysconfig.get_paths().get('purelib',''))" > "%VISUM_SITE_FILE%" 2>nul
177+
IF EXIST "%VISUM_SITE_FILE%" (
178+
SET /P VISUM_SITE_PACKAGES=<"%VISUM_SITE_FILE%"
179+
DEL /Q "%VISUM_SITE_FILE%" >nul 2>&1
180+
)
181+
182+
IF NOT DEFINED VISUM_SITE_PACKAGES (
183+
ECHO WARNING: Could not resolve Visum site-packages path.
184+
SET "VISUM_PACKAGE_STATUS=skipped (could not resolve site-packages)"
185+
GOTO :VISUM_DONE
186+
)
187+
188+
ECHO Resolved Visum site-packages path:
189+
ECHO !VISUM_SITE_PACKAGES!
190+
191+
:: Check if packages are already importable
192+
"%VISUM_PYTHON_EXE%" -c "import tables,openmatrix,yaml" >nul 2>&1
193+
IF !ERRORLEVEL! EQU 0 (
194+
ECHO Required Visum packages are already available. Skipping install.
195+
SET "VISUM_PACKAGE_STATUS=already available"
196+
GOTO :VISUM_DONE
197+
)
198+
199+
:: Ensure site-packages directory exists
200+
IF NOT EXIST "!VISUM_SITE_PACKAGES!" (
201+
MKDIR "!VISUM_SITE_PACKAGES!" >nul 2>&1
169202
IF !ERRORLEVEL! NEQ 0 (
170-
ECHO WARNING: Failed to install one or more Visum Python packages.
171-
) ELSE (
172-
ECHO Visum packages installed successfully.
203+
ECHO WARNING: Cannot create directory:
204+
ECHO !VISUM_SITE_PACKAGES!
205+
ECHO Re-run as Administrator or ask IT to install these packages.
206+
SET "VISUM_PACKAGE_STATUS=missing packages, no write access"
207+
GOTO :VISUM_DONE
173208
)
174209
)
210+
211+
:: Test write access
212+
>"!VISUM_SITE_PACKAGES!\.__simor_write_test__.tmp" ECHO write-test 2>nul
213+
IF NOT EXIST "!VISUM_SITE_PACKAGES!\.__simor_write_test__.tmp" (
214+
ECHO WARNING: Cannot write to:
215+
ECHO !VISUM_SITE_PACKAGES!
216+
ECHO Re-run as Administrator or ask IT to install these packages.
217+
SET "VISUM_PACKAGE_STATUS=missing packages, no write access"
218+
GOTO :VISUM_DONE
219+
)
220+
DEL /Q "!VISUM_SITE_PACKAGES!\.__simor_write_test__.tmp" >nul 2>&1
221+
222+
:: Install packages
223+
ECHO Installing tables, openmatrix, pyyaml into:
224+
ECHO !VISUM_SITE_PACKAGES!
225+
"%VISUM_PYTHON_EXE%" -m pip install --upgrade tables openmatrix pyyaml --target "!VISUM_SITE_PACKAGES!"
226+
IF !ERRORLEVEL! NEQ 0 (
227+
ECHO WARNING: Failed to install one or more Visum Python packages.
228+
SET "VISUM_PACKAGE_STATUS=install failed"
229+
) ELSE (
230+
ECHO Visum packages installed successfully.
231+
SET "VISUM_PACKAGE_STATUS=installed/updated"
232+
)
233+
234+
:VISUM_DONE
175235
ECHO.
176236

177237
:: ============================================================================
@@ -280,6 +340,7 @@ ECHO.
280340
ECHO PYTHON_ACTIVITYSIM = %PYTHON_ACTIVITYSIM%
281341
ECHO PYTHON_MAZ_SKIMMING = %PYTHON_MAZ_SKIMMING%
282342
ECHO PYTHON_VISUM = %PYTHON_VISUM%
343+
ECHO VISUM_PACKAGES = %VISUM_PACKAGE_STATUS%
283344
IF DEFINED PYTHON_PARKING (
284345
ECHO PYTHON_PARKING = !PYTHON_PARKING!
285346
) ELSE (
@@ -296,6 +357,7 @@ ENDLOCAL & (
296357
SET "PYTHON_MAZ_SKIMMING=%PYTHON_MAZ_SKIMMING%"
297358
SET "PYTHON_VISUM=%PYTHON_VISUM%"
298359
SET "PYTHON_PARKING=%PYTHON_PARKING%"
360+
SET "VISUM_PACKAGE_STATUS=%VISUM_PACKAGE_STATUS%"
299361
SET "EXT_DIR=%EXT_DIR%"
300362
SET "BASE_DIR=%BASE_DIR%"
301363
SET "PATH=%PATH%"

0 commit comments

Comments
 (0)