программа pyinstaller не работает, если построена без консоли

У меня есть небольшое приложение, которое я пытаюсь создать на компьютерах с Windows. Программа создает соединение OpenVPN. Если я соберу программу и запущу ее, она сначала откроет консоль в качестве вывода программы. Если я передам параметр -w в pyinstaller, чтобы не создавать его с подключенной консолью, программа вообще не запустится. Он открывается нормально, но соединение vpn никогда не создается.

С консолью все работает идеально.

У меня также есть базовое ведение журнала для приложения, чтобы увидеть, где мой код может остановиться и ничего не будет записано. С консоли у меня программа выплевывает всякие логи.

Я просто не знаю, почему моя программа может отлично работать с консолью, но ничего не делать без нее. Есть идеи?


person Romeo Mihalcea    schedule 11.03.2013    source источник


Ответы (2)


Сам отвечу на это. Убедитесь, что вы ничего не печатаете, а также перенаправляете весь стандартный вывод в регистратор, файл или что-то еще вместо консоли.

person Romeo Mihalcea    schedule 16.03.2013

У меня была аналогичная проблема, но я не мог найти никаких операторов print/stdout, идущих на консоль. Я использовал subprocess.Popen и перенаправлял stdout=subprocess.PIPE. Впоследствии я добавил stderr=subprocess.STDOUT и stdin=subprocess.PIPE, и моя программа заработала. Эта страница (Python subprocess.call() не работает при использовании pythonw.exe) при сбоях подпроцесса помог мне заставить его работать.

person Ryan    schedule 14.11.2015