Следующий код отлично работает в Windows:
subprocess.Popen([PATH_TO_G++]/g++ file.cpp -o file.exe)
Однако в Linux я получаю следующую ошибку:
Ошибка OSE: [Errno 2] Нет такого файла или каталога
После прочтения документации и нескольких потоков SO я обнаружил, что subprocess.Popen работает по-разному в системах Windows и nix.В Windows он принимает строку в качестве параметра и запускает ее так же, как вы запускаете ее в терминале.
В Linux, однако, требуется список строк, если у вас есть параметры.Первым значением является сама программа, затем идут атрибуты.Вы можете заставить его вести себя как Windows, передав аргумент Shell = True, но это не очень хорошее решение для меня.
Я попробовал функцию shlex.split, но она все еще не работает.