Python模块重启后未更新主模块

2024-03-28 12:49:36 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我又回到了一个不得不停止大约6个月的项目中,在重新安装了我的操作系统之后,我又重新开始了我的操作系统,各种疯狂的事情都发生了。我确保安装的python版本(2.6)与以前使用的版本相同。在

它开始给我一个奇怪的tkinter错误,我以前没有遇到过麻烦,这个程序相对简单,我退出时留下的2到3个错误,我有文档记录,与界面无关。在

更奇怪的是,即使在我删除了有问题的代码部分之后,同样的错误也会出现。事实上,回溯指向的是它所引用的模块中根本不存在的一行,例如:当模块只有200行时,第262行。在

在为主模块启动了一个全新的文件并进行了复制/粘贴之后,它终于意识到有问题的代码不见了,我停止获取错误,结果发现在另一个模块中对代码所做的任何更新都没有在我通过shell重新启动程序时出现。(我没有忘记保存)在处理完这个之后,当然,旧的接口错误又出现了,只是出现在以前工作过的另一段代码中。在

事实上,如果我恢复到六个月前的文件,程序运行良好。但是,只要我在主模块中做了任何更改,接口错误就会回来。在

这是最初的错误:

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

我猜除了我自己糟糕的编程之外,还有别的事情在这里发生。有人有什么想法吗?在

编辑:回想一下,我相信我读过一些关于通过IDLE的shell运行Tkinter程序是个坏主意的文章,而且至少,如果我通过双击.pyc文件来启动主模块,TclError似乎已经消失了。也许我的问题只是由chrisatley和Vlad在下面提到的时间戳/PYTHONPATH问题的组合?在


Tags: 模块文件代码inpyself程序tkinter
2条回答

检查PYTHON_PATH变量,您可能有一个旧版本的文件。在

同时启动python解释器并键入以下命令以检查路径:

import sys
print sys.path

仔细查看输出,确保没有任何旧目录。在

我也发生过类似的事情。问题的原因是我的源代码管理软件(hg)将文件的日期设置为过去的日期。因此,python选择使用以前生成的具有更新时间戳的.pyc文件。在

解决方案是在测试代码之前删除所有的.pyc文件。在

相关问题 更多 >