Различное поведение с пиинсталлером и без него —noconsole

#mysql #python-3.x #tkinter

Вопрос:

Я работаю над мини-инструментом с оконным графическим интерфейсом с Python3, tkinter и MySQL

Сначала код отлично работает с запуском в VS Code Python Terminal. Затем я перехожу к использованию pyinstaller для упаковки исходных файлов в файл .exe

На этом этапе все по-прежнему в порядке.

Пытаясь избавиться от консоли, я добавляю —noconsole в pyinstaller, и происходит что-то странное. Графический интерфейс перестает работать непосредственно перед выполнением и фиксацией в базе данных.

Добавив tkinter.messagebox, я могу обнаружить, что программа больше не работает до или после того, как я назначу командлет MySQL со строкой.format().

Но если я удалю аргумент —noconsole, все вернется на круги своя

В чем здесь может быть проблема?


Отредактировано для примера кода:

без —noconsole всплывают оба окна сообщений. Но с его помощью 2-й mbox никогда не всплывает

 if A == True:
    tk.mbox('Debug 1')
    query1 = "__some_SQL_query__'".format('__some_values')
    tk.mbox('Debug 2')
    result = execute_query(query1,....)
else:
    ....
 

Комментарии:

1. отображается ли что-нибудь в консоли? если так хорошо, то, очевидно, вам нужна консоль, и вы не можете ее не использовать

2. @Matiiss У меня есть 1 функция print() перед назначением строки, но это не кажется проблемой, потому что у меня также есть несколько функций print() в начале приложения. Даже если я прокомментирую все print() в коде, у меня все равно не было прогресса на той же позиции

3. Хорошо, но можете ли вы видеть то, что отображается в консоли при запуске консоли, например, отображается ли что-нибудь? Кроме того, вы сказали о выполнении команды cmd, как именно вы это делаете? Возможно, чтобы выполнить эту команду cmd любым используемым вами методом, вам просто нужна консоль, возможно, попробуйте использовать subprocess.Popen

4. @Matiiss Я добавил ту часть кода выше, где установлен —noconsole, он никогда не передаст запрос.формат. Он просто останавливается, не выскакивая «Debug2» без каких-либо указаний

5. Но если не добавлять опцию, оба окна сообщений всплывают соответствующим образом и могут успешно выполнить SQL.