2010-05-04 1 views
2

Я недавно вернулся к проекту, который должен был остановиться около 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, упомянутые ниже Крисом Атли и Владом?

ответ

0

Проверьте переменную PYTHON_PATH, вероятно, у вас есть более старая версия файла.

Также запустить интерпретатор питона и введите следующие команды, чтобы проверить путь:

import sys 
print sys.path 

Внимательно посмотрите на выходе и убедитесь, что у вас нет каких-либо старых каталогов, сидящих там.

+0

Я не устанавливал PYTHONPATH, и установка пути python к каталогу вызывает появление ошибки tkinter, равно как и печать sys.path. Просто, чтобы быть ясным: если я скопирую старую (шесть месяцев назад) версию программы (только файлы .py) в новый каталог и запустил ее оттуда через оболочку, программа отлично работает. Если я добавлю «Print» hello »в начало основного модуля, то ошибка tkinter, которую я цитировал ранее, обязательно покажет, как только я нажму кнопку на интерфейсе программы. – Ian

+0

, так что происходит, когда вы просто запускаете интерпретатор python и распечатываете sys.path, получаете ли вы какой-либо вывод? – Vlad

+0

О, я вижу, извините. Но да, там все прекрасно. Только текущий каталог и каталоги python26. – Ian

2

У меня было что-то подобное. Причиной для моих проблем было то, что мое программное обеспечение для управления версиями (hg) устанавливало дату файлов на дату в прошлом. Из-за этого python решил использовать ранее созданные .pyc-файлы, у которых были новые метки времени.

Решение должно было удалить все файлы .pyc перед тестированием кода.

+0

Старые временные метки не кажутся моей проблемой, и поскольку программа настолько мала, я не использую ничего для организации файлов, кроме резервного копирования, что у меня есть так часто. – Ian

 Смежные вопросы

  • Нет связанных вопросов^_^