Subprocess.call или Subprocess.Popen не могут использовать исполняемые файлы, которые находятся в PATH (Linux / Windows)

Я пишу программу, которая должна работать как на Linux, так и на Windows и использовать исполняемые файлы (с параметрами), которые существуют в пути. (Предположительно)

В настоящее время у меня возникают проблемы с запуском исполняемых файлов в Windows с помощью Subprocess.Call и Subprocess.Popen.

Для кода, подобного этому, в окнах 8

def makeBlastDB(inFile, inputType, dbType, title, outDir): strProg = 'makeblastdb' strInput = '-in ' + inFile strInputType = '-input_type ' + inputType strDBType = '-dbtype ' + dbType strTitle = '-title ' + title strOut = '-out ' + os.path.join(os.sep, outDir, title) cmd = [strProg, strInput, strInputType, strDBType, strTitle, strOut] result = Popen(cmd, shell=True) 

Я получаю сообщение об ошибке в консоли

 'makeblastdb' is not recognized as an internal or external command, operable program or batch file. 

Хотя я могу запустить ту же команду, используя cmd.exe, я получаю тот же ответ с shell = False.

Любые идеи о том, как я могу запустить команду, предполагая, что исполняемый файл находится в переменной среды PATH? благодаря

3 Solutions collect form web for “Subprocess.call или Subprocess.Popen не могут использовать исполняемые файлы, которые находятся в PATH (Linux / Windows)”

Вы можете управлять переменными среды, доступными в порожденном подпроцессе, передавая сопоставление с аргументом ключевого слова env . Например

 proc = subprocess.Popen(args, env={'PATH': '/some/path'}) 

Или наследовать PATH из PATH системной среды, не забирая все остальное из системной среды:

 proc = subprocess.Popen(args, env={'PATH': os.getenv('PATH')}) 

Однако проще или проще просто использовать абсолютный путь.

Хорошо, вот как я заработал.

 env = os.environ proc = subprocess.Popen(args, env=env) 

Я боролся с этим сам, пока не нашел этот отчет об ошибке python .

«Если вы добавите каталог в PATH в Windows, чтобы каталог находился в кавычках, подпроцесс не находит в нем исполняемые файлы». Поскольку кавычки не требуются при удалении окон, они исправляют мою проблему (в версии 2.7).

  • Индикатор выполнения Windows в Python Tkinter
  • Кросс-компиляция скрипта Python в Linux в исполняемый файл Windows
  • В Python, как я могу получить правильно обведенный путь для файла?
  • Как перемещать файлы, перечисленные в текстовом файле из одной папки в другую в python
  • Не удается открыть видеофайлы «.mp4» с использованием OpenCV 2.4.3, Python 2.7 на компьютере под управлением Windows 7
  • Предотвращение многопроцессорных «ошибок при запуске»
  • Невозможно импортировать cv2; Msgstr "Ошибка загрузки DLL"
  • Python mkdir дает мне неправильные разрешения
  • Python - лучший язык программирования в мире.