Использование Popen внутри процесса, который был создан с использованием Popen, ничего не делает - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь открыть скрипт python от другого без блокировки с помощью Popen. Стартовый скрипт открывает скрипт драйвера, и (с помощью кнопки tkinter) скрипт драйвера может открывать сторонний скрипт. Когда я пытаюсь вызвать Popen в скрипте драйвера, ничего не происходит - оболочка открывается очень быстро, а затем закрывается. Однако, когда я запускаю скрипт драйвера без предварительного вызова стартера (как __main__), боковой скрипт открывается нормально.

Я разместил код ниже, я что-то упускаю из-за вложенных вызовов Popen? Для исполняемого файла я пробовал sys.executable, python.exe и pythonw.exe. Нет работы. Потоки могут работать как альтернатива Popen, но в стороннем скрипте также используется tkinter, поэтому мне нужно найти способ сделать поток tkinter безопасным.

starter.py:

pid = subprocess.Popen(["pythonw.exe", "driver.py"])

driver.py:

pid = subprocess.Popen([sys.executable, "side_script.py"]

1 Ответ

0 голосов
/ 12 февраля 2020

Я нашел проблему, к счастью, она была простой. По совету Чарльза Даффи, я попытался просмотреть любые ошибки, используя output, error = pid.communicate (), и обнаружил, что при поиске файла произошла ошибка. Я изменил код так, чтобы он указывал на файл с помощью sys.path [0], и это решило проблему.

...