После использования pyinstaller моя программа зависает при запуске команды subprocess.run () - PullRequest
0 голосов
/ 11 декабря 2018

Я собираю свой инструмент Python с помощью pyinstaller.Когда я использую:

pyinstaller --onefile start.py

Мой сгенерированный start.exe работает нормально и все функции работают, но когда я использую:

pyinstaller --onefile --noconsole start.py

Мой инструмент просто зависнет на этом коде:

output = subprocess.run(["arp", "-a"], shell=True, stdout=subprocess.PIPE)
file.write(output.stdout.decode("utf-8"))

У меня есть такие вещи для netstat, ipconfig и т. Д. Я не могу понять, почему это работает, когда консоль открыта, но не работает, когда консоль закрыта.Может кто-нибудь, пожалуйста, объясните мне, почему это так и, возможно, пример того, как это должно быть.Я довольно новичок в Python и Pyinstaller.

Заранее спасибо!

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

Команда "arp -a" теперь работает после превращения моего кода Python в .exe, но когдаон получает:

output = subprocess.Popen(["systeminfo"], shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf-8"))

shell = True не имеет значения.Он не работает без и с ним.

У кого-нибудь есть предложения?У меня есть много подсказок, но они не будут работать после того, как я использую pyinstaller с командой --noconsole.

1 Ответ

0 голосов
/ 11 декабря 2018

Я обнаружил, что при использовании параметра --noconsole с pyinstaller вам также необходимо включить "stdin =" и "stdout =".

Моя проблема была решена с помощью этого кода:

output = subprocess.Popen(["arp", "-a"], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf=8"))

Я надеюсь, что это поможет другим, кто сталкивается с той же проблемой!

Спасибо @PedroLobito за помощь и поиск части ответа!

...