Подпроцесс Popen не выполняется, если python выходит сразу после - PullRequest
0 голосов
/ 06 февраля 2020

Следующий код не запускает мое приложение на Python 3.7 на Ма c 10.15.3.

import subprocess

cmdLine = "/Applications/RV.app/Contents/MacOS/RV"

subprocess.Popen(cmdLine, shell=True)

Это не выдает ошибку, просто ничего не делает. Если я запускаю тот же код в Python 2.7, он работает правильно и запускает приложение, не дожидаясь его.

Я обнаружил, отлаживая и прогуливаясь по коду подпроцесса, который он фактически запустил, когда я это делал. Что заставило меня попробовать:

import subprocess
import time

cmdLine = "/Applications/RV.app/Contents/MacOS/RV"

subprocess.Popen(cmdLine, shell=True)
time.sleep(1)

Что тогда сработало. Кажется, что команда Popen не может порождать отдельный процесс до выхода python. Я что-то здесь не так делаю?

Редактировать:

Похоже, что это также имеет отношение к реальному приложению, которое я пытаюсь запустить. Например, запуск приложения «Калькулятор» или Firefox работает без добавления сна.

...