2015-06-23 2 views
4

Я не могу заставить PyCharm остановиться в строке кода, где возникает исключение, когда я импортирую Theano.PyCharm break on exception не работает с Theano

Мой код:

import theano 
raise Exception() 

Я ожидаю, что PyCharm отладчик остановится на raise Exception() линии, но он бросает RuntimeError и выходит из отладчика:

Traceback (most recent call last): 
Error in sys.excepthook: 
Traceback (most recent call last): 
    File "/homes/user/Downloads/pycharm-community-4.5.1/helpers/pydev/pydevd_breakpoints.py", line 89, in _excepthook 
    _original_excepthook(exctype, value, tb) 
    File "/usr/local/lib/python2.7/dist-packages/theano/gof/link.py", line 58, in thunk_hook 
    __excepthook(type, value, trace) 
    File "/homes/user/Downloads/pycharm-community-4.5.1/helpers/pydev/pydevd_breakpoints.py", line 89, in _excepthook 
    _original_excepthook(exctype, value, tb) 
    File "/usr/local/lib/python2.7/dist-packages/theano/gof/link.py", line 58, in thunk_hook 
    __excepthook(type, value, trace) 
    <...> 
    File "/usr/local/lib/python2.7/dist-packages/theano/gof/link.py", line 58, in thunk_hook 
    __excepthook(type, value, trace) 
    File "/homes/user/Downloads/pycharm-community-4.5.1/helpers/pydev/pydevd_breakpoints.py", line 84, in _excepthook 
    exception_breakpoint = get_exception_breakpoint(exctype, _handle_exceptions) 
    File "/homes/user/Downloads/pycharm-community-4.5.1/helpers/pydev/pydevd_breakpoints.py", line 65, in get_exception_breakpoint 
    exception_full_qname = get_exception_full_qname(exctype) 
    File "/homes/user/Downloads/pycharm-community-4.5.1/helpers/pydev/pydevd_breakpoints.py", line 53, in get_exception_full_qname 
    def get_exception_full_qname(exctype): 
RuntimeError: maximum recursion depth exceeded 

Original exception was: 
Traceback (most recent call last): 
    File "/homes/user/Downloads/pycharm-community-4.5.1/helpers/pydev/pydevd.py", line 2357, in <module> 
    globals = debugger.run(setup['file'], None, None, is_module) 
    File "/homes/user/Downloads/pycharm-community-4.5.1/helpers/pydev/pydevd.py", line 1777, in run 
    pydev_imports.execfile(file, globals, locals) # execute the script 
    File "/homes/user/corp/python/projects/n_test.py", line 10, in <module> 
    raise Exception() 
Exception 
+0

В общем, 'RuntimeError: превышена максимальная глубина рекурсии', когда глобальный интерпретатор python повторяет скомпилированный код anano больше, чем разрешено. Почему это происходит при импорте, я не знаю, но вы можете установить максимальную глубину на некоторое большее (1е6) число и посмотреть, помогает ли это вообще. – user2805751

+0

Попробуйте обновить пип. У меня была такая же ошибка, прежде чем я сделаю «sudo -H pip install --upprade pip». Я использовал 'sudo -H', потому что он находится на OSX 10.11.2. – Znatz

ответ

0

Один хак закомментировать эту строку sys.excepthook = thunk_hook in .../lib/python2.7/site-packages/theano/gof/link.py

+0

Если это не ошибка или недостающая функция, исправление библиотечного кода не является реальным решением. –

+0

Это звучит как ошибка. –

0

Похож на ошибку в одном из библиотек (возможно, оба: ^)).

По какой-то причине, theano и PyCharm 's excepthooks оба думают о другом как о своем предке.

Добавить отладочную печать в обе библиотеки в точках, где sys.excepthook и переменные-члены, указывающие на предыдущий обработчик, установлены для отображения порядка настройки. Кто-то, похоже, нарушает правила привязки обработчика.