Я недавно вернулся к проекту, который должен был остановиться около 6 месяцев, а после переустановки моей операционной системы и возврата к ней у меня все виды сумасшедших вещей бывает. Я постарался установить ту же самую версию (2.6) python, что и раньше.Модули Python не обновляются после перезапуска основного модуля
Это началось с того, что я задал мне странную ошибку tkinter, с которой у меня не было проблем раньше, программа относительно проста и 2 или 3 ошибки, которые были оставлены, когда я ушел, я документировал и не имел отношения к интерфейс.
Вещи были еще более странными, когда одна и та же ошибка появлялась даже после того, как я удалил нарушающий раздел кода. Фактически, трассировка указывала на строку, которая даже не существовала в модуле, на который он ссылался, например: строка 262, когда модуль имел всего 200 строк.
После запуска совершенно нового файла для основного модуля и его копирования/вставки он наконец узнал, что код нарушения был утерян, и я прекратил получение ошибки только для того, чтобы обнаружить, что любые обновления кода, которые я сделал в другом модуле, t появляется, когда я перезапускал программу через оболочку. (Я не забыл сэкономить.) После этого, конечно, возникла ошибка старого интерфейса, только в другом разделе кода, который работал ранее.
Фактически, если я вернусь к файлам, которые у меня были шесть месяцев назад, программа работает нормально. Однако, как только я изменяю что-либо в основном модуле, ошибка интерфейса возвращается.
Вот оригинальная ошибка:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\PyStuff\interface.py", line 202, in dispOne
__main__.top.destroy()
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1938, in destroy
self.tk.call('destroy', self._w)
TclError: can't invoke "destroy" command: application has been destroyed
Я предполагаю, что-то еще происходит здесь, кроме моего собственного плохого программирования. У кого-нибудь есть идеи?
Редактирование: Думаю, что я читал что-то о том, что это плохая идея запускать программы Tkinter через оболочку IDLE, и по крайней мере кажется, что TclError исчез, если вместо этого я запустил основной модуль, дважды щелкнув файл .pyc. Возможно, мои проблемы были всего лишь комбинацией того, что плюс проблемы с меткой/PYTHONPATH, упомянутые ниже Крисом Атли и Владом?
Я не устанавливал PYTHONPATH, и установка пути python к каталогу вызывает появление ошибки tkinter, равно как и печать sys.path. Просто, чтобы быть ясным: если я скопирую старую (шесть месяцев назад) версию программы (только файлы .py) в новый каталог и запустил ее оттуда через оболочку, программа отлично работает. Если я добавлю «Print» hello »в начало основного модуля, то ошибка tkinter, которую я цитировал ранее, обязательно покажет, как только я нажму кнопку на интерфейсе программы. – Ian
, так что происходит, когда вы просто запускаете интерпретатор python и распечатываете sys.path, получаете ли вы какой-либо вывод? – Vlad
О, я вижу, извините. Но да, там все прекрасно. Только текущий каталог и каталоги python26. – Ian