Sto riscontrando un problema che dovrebbe essere correlato alle chiamate nidificate che sto facendo.
RunProgram () -> cmd -> Python
Il seguente file bat funziona perfettamente.
set JMP_PYTHON_PTH=%UserProfile%\miniconda_JMP\
CALL %JMP_PYTHON_PTH%\Scripts\activate.bat %JMP_PYTHON_PTH%
start /B /wait "" python test.py
Eppure, quando si usa RunProgram () il codice fallisce a meno che non aggiungo il percorso assoluto al file Python (test.py -> 'C: /a/b/c/test.py')
ClearLog();
file_path = ConvertFilePath( "./tests/run_python_installation_test.bat", windows);
rp = RunProgram( Executable( "cmd.exe" ),
Options( {"/C", file_path} ),
ReadFunction("text") // returns all text
);L'errore che ottengo, sempre solo se non viene fornito il percorso assoluto, è il seguente.
(base) C:\WINDOWS\system32>start /B /wait \!"\!" python test.py
python: can't open file 'test.py': [Errno 2] No such file or directory
Quando eseguo questo
file_path = convertfilepath("$temp/x.bat","windows");
savetextfile(file_path, "dir\!n");
rp = RunProgram( Executable( "cmd.exe" ),
Options( {"/C", file_path} ),
ReadFunction("text") // returns all text
);sembra che la directory di lavoro per l'esecuzione del file bat sia la mia directory desktop. Penso che python utilizzerà la directory di lavoro per trovare il nome del file anche sulla riga di comando. L'uso del nome completo del percorso sembra una buona scelta.
https://superuser.com/questions/396394/how-do-i-set-an-executables-working-directory-via-the-command-line-prior-to-ex suggerisce di specificare la directory di lavoro nel comando di avvio:
START /D c:\temp notepad.exe