Форум сайта python.su
При использовании 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")
Отредактировано gmaksim (Авг. 1, 2017 12:37:16)
Офлайн
Трудно представить, как можно неправильно запустить программу в пайшарме, но кажется, вам это удалось
Офлайн
Хотя, может быть просто не туда глядите
Офлайн
Да как бы не так.
print в функциях работают и выдают информацию (“навесил” для теста). Пример работы консоли и “падения” программы в приложении.
По коду - вызывается класс, в классе идут методы один за другим, в них вызывается GUI другими методами с разными параметрами. Есть метод для сохранения данных в БД, вот там и падает, и это точно какая-то особенность использования в качестве GUI - PyQt5 - так как при использовании tkinter - условно при нажатии кнопки запуска функции сохранения в БД в консоль выводило ошибку, почему она не срабатывала, тут же просто “падает”.
Отредактировано gmaksim (Авг. 1, 2017 10:43:56)
Прикреплённый файлы: 2.PNG (18,8 KБ)
Офлайн
gmaksimесть такое и именно в PyQt5. это особенность сборки походу, в С++ такое бывает при сегфолте или нуль-пойнтере. можно из терминала запускать типа python -v my_script
При использовании PyQt5, например при нажатии кнопки к которой привязана функция, если что-либо в ней (функции) идет не так - программа “падает” и ничего не выдается об ошибке в консоль IDE (в моем случае PyCharm), возможно кто знает, как это исправить?
Онлайн
Офлайн
gmaksim
Ну блин, вы так вопрос задаете “ничего не выдается об ошибке в консоль IDE” как будто у вас нет сообщения об ошибке именно в терминале пайшарма, а другом терминале - все нормально.
PyQt - это набор питоньих обвязок над бинарниками Qt, если что-то “падает” при выполнении этого бинарного кода мы никогда не получим питоньего трейсбэка. Просто, примите это как должное.
Офлайн
vic57Получилось, только теперь падает на строчке:
есть такое и именно в PyQt5. это особенность сборки походу, в С++ такое бывает при сегфолте или нуль-пойнтере. можно из терминала запускать типа python -v my_script
conn = sqlite3.connect('DATA//db.sqlite')Наверно надо поменять на абсолютный путь?
sqlite3.OperationalError: unable to open database file
FishHookКак-то так и думал, но надеялся, что может есть пути обхода.
PyQt - это набор питоньих обвязок над бинарниками Qt, если что-то “падает” при выполнении этого бинарного кода мы никогда не получим питоньего трейсбэка. Просто, примите это как должное.
Отредактировано gmaksim (Авг. 1, 2017 11:17:55)
Офлайн
gmaksimэто уже не Qt ошибка
sqlite3.OperationalError: unable to open database file
Офлайн
vic57Угу, я и не имел ввиду, что это Qt ошибка, разобрался, действительно все выводит. Еще раз спасибо.
это уже не Qt ошибка
Отредактировано gmaksim (Авг. 1, 2017 11:37:10)
Офлайн
gmaksimЧто “всё”? Вы же понимаете, что невозможно показать построчный вывод ошибки в скомпилированной сишной библиотеке. Ваша ошибка возникает явно в питоньем коде, поэтому она и отлавливается.
действительно все отлавливает
Офлайн