Найти - Пользователи
Полная версия: Вывод ошибки от PyQt5 в консоль
Начало » Python для новичков » Вывод ошибки от PyQt5 в консоль
1 2
gmaksim
При использовании PyQt5, например при нажатии кнопки к которой привязана функция, если что-либо в ней (функции) идет не так - программа “падает” и ничего не выдается об ошибке в консоль IDE (в моем случае PyCharm), возможно кто знает, как это исправить?

upd (решение):
https://stackoverflow.com/questions/34363552/python-process-finished-with-exit-code-1-when-using-pycharm-and-pyqt5

 # Back up the reference to the exceptionhook
sys._excepthook = sys.excepthook
def my_exception_hook(exctype, value, traceback):
    # Print the error and traceback
    print(exctype, value, traceback)
    # Call the normal Exception hook after
    sys._excepthook(exctype, value, traceback)
    sys.exit(1)
# Set the exception hook to our wrapping function
sys.excepthook = my_exception_hook
 try:
    sys.exit(app.exec_())
except:
    print("Exiting")
FishHook
Трудно представить, как можно неправильно запустить программу в пайшарме, но кажется, вам это удалось

FishHook
Хотя, может быть просто не туда глядите

gmaksim
Да как бы не так.
print в функциях работают и выдают информацию (“навесил” для теста). Пример работы консоли и “падения” программы в приложении.

По коду - вызывается класс, в классе идут методы один за другим, в них вызывается GUI другими методами с разными параметрами. Есть метод для сохранения данных в БД, вот там и падает, и это точно какая-то особенность использования в качестве GUI - PyQt5 - так как при использовании tkinter - условно при нажатии кнопки запуска функции сохранения в БД в консоль выводило ошибку, почему она не срабатывала, тут же просто “падает”.
vic57
gmaksim
При использовании PyQt5, например при нажатии кнопки к которой привязана функция, если что-либо в ней (функции) идет не так - программа “падает” и ничего не выдается об ошибке в консоль IDE (в моем случае PyCharm), возможно кто знает, как это исправить?
Онлайн
есть такое и именно в PyQt5. это особенность сборки походу, в С++ такое бывает при сегфолте или нуль-пойнтере. можно из терминала запускать типа python -v my_script
FishHook
gmaksim
Ну блин, вы так вопрос задаете “ничего не выдается об ошибке в консоль IDE” как будто у вас нет сообщения об ошибке именно в терминале пайшарма, а другом терминале - все нормально.
PyQt - это набор питоньих обвязок над бинарниками Qt, если что-то “падает” при выполнении этого бинарного кода мы никогда не получим питоньего трейсбэка. Просто, примите это как должное.
gmaksim
vic57
есть такое и именно в PyQt5. это особенность сборки походу, в С++ такое бывает при сегфолте или нуль-пойнтере. можно из терминала запускать типа python -v my_script
Получилось, только теперь падает на строчке:
conn = sqlite3.connect('DATA//db.sqlite')
sqlite3.OperationalError: unable to open database file
Наверно надо поменять на абсолютный путь?
FishHook
PyQt - это набор питоньих обвязок над бинарниками Qt, если что-то “падает” при выполнении этого бинарного кода мы никогда не получим питоньего трейсбэка. Просто, примите это как должное.
Как-то так и думал, но надеялся, что может есть пути обхода.
python -v my_script похоже на то.
vic57
gmaksim
sqlite3.OperationalError: unable to open database file
это уже не Qt ошибка
gmaksim
vic57
это уже не Qt ошибка
Угу, я и не имел ввиду, что это Qt ошибка, разобрался, действительно все выводит. Еще раз спасибо.

FishHook
Однако ‘python -v my_script’ (из терминала) все отлавливает (перед “падением”).
FishHook
gmaksim
действительно все отлавливает
Что “всё”? Вы же понимаете, что невозможно показать построчный вывод ошибки в скомпилированной сишной библиотеке. Ваша ошибка возникает явно в питоньем коде, поэтому она и отлавливается.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB