Java-проект, над которым я работаю, содержит файл .bat
и файл .sh
, которые создают CLASSPATH
для запуска проекта. (.bat
для окон и .sh
для остальных).
Теперь я пишу скрипт на python, которому нужен доступ к пути к классам, созданному этими скриптами, от .sh
для Linux и от .bat
для Windows.
В настоящее время я делаю это для Linux:
Popen(['bash', '-c', '. mkcp.sh && echo $CLASSPATH'], stdout=sp.PIPE).communicate()[0].strip()
И я не могу найти эквивалентный способ сделать это в Windows. До сих пор я придумал это
check_output(['cmd', '/c', 'call mkcp.bat && echo %CLASSPATH%'])
Но это помещает все команды из файла mkcp.bat
в стандартный вывод. (Добавление @echo off
к этому файлу не вариант для меня, то есть я не могу его изменить). Помимо этой проблемы, основная проблема заключается в том, что %CLASSPATH%
заменяется значением до запуска пакетного файла, а это не то, что мне нужно.
Другой подход, о котором я подумал, состоял в том, чтобы создать объект Popen
, как указано выше, и запустить пакетный файл, и если я смогу получить доступ к среде этого процесса, я смогу получить то, что хочу. Но из документации Попена это не представляется возможным.
Есть идеи, как этого добиться?