Tengo un problema que debería estar relacionado con las llamadas anidadas que estoy haciendo.
RunProgram () -> cmd -> Python
El siguiente archivo bat funciona perfectamente bien.
set JMP_PYTHON_PTH=%UserProfile%\miniconda_JMP\
CALL %JMP_PYTHON_PTH%\Scripts\activate.bat %JMP_PYTHON_PTH%
start /B /wait "" python test.py
Y, sin embargo, cuando se usa RunProgram (), el código falla a menos que agregue la ruta absoluta al archivo 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
);El error que obtengo, nuevamente solo si no se proporciona la ruta absoluta, es el siguiente.
(base) C:\WINDOWS\system32>start /B /wait \!"\!" python test.py
python: can't open file 'test.py': [Errno 2] No such file or directory
Cuando ejecuto esto
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
);parece que el directorio de trabajo para la ejecución del archivo bat es mi directorio de escritorio. Creo que Python también usará el directorio de trabajo para encontrar el nombre del archivo en la línea de comando. Usar el nombre completo de la ruta parece una buena opción.
https://superuser.com/questions/396394/how-do-i-set-an-executables-working-directory-via-the-command-line-prior-to-ex sugiere que puede especificar el directorio de trabajo en su comando de inicio:
START /D c:\temp notepad.exe