IPython 9.7.0,
linux debian.
Когда в файле .py обнаруживается ошибка, обратная трассировка в ipython не показывает правильный фрагмент кода, что очень затрудняет отладку. Это зависит от прошлых действий: трассировка работает нормально, пока файл не будет изменен (похоже, пока не изменится количество строк, см. ниже), затем перестанет находить правильное размещение или ошибку в файле, с сообщением
Обратите внимание, что в моем ipython_config.py у меня есть:
Код: Выделить всё
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
У меня есть файл my.py с ошибкой:
Код: Выделить всё
class A():
def a(self):
print('a')
AAA
Код: Выделить всё
In [1]: import my
In [2]: p = my.A()
In [3]: p.a()
a
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[3], line 1
----> 1 p.a()
File ~/my.py:4, in A.a(self)
2 def a(self):
3 print('a')
----> 4 AAA
NameError: name 'AAA' is not defined
Код: Выделить всё
class A():
def a(self):
print('a')
BBB
Код: Выделить всё
File ~/my.py:4, in A.a(self)
2 def a(self):
3 print('a')
----> 4 BBB
NameError: name 'BBB' is not defined
Код: Выделить всё
class A():
def a(self):
print('a')
CCC
Код: Выделить всё
In [5]: p.a()
a
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[5], line 1
----> 1 p.a()
File ~/my.py:4, in A.a(self)
0
NameError: name 'CCC' is not defined
Код: Выделить всё
'CCC'У вас есть идеи, как это исправить?
(ИИ предложил добавить в ipython_config.py строки c.InteractiveShell.cache_size = 0 или c.InteractiveShell.ast_node_interactivity = 'last_expr_or_assign', но это не решает проблему)
Подробнее здесь: https://stackoverflow.com/questions/798 ... -a-py-file
Мобильная версия