1

自从从 Ubuntu 13.04 更新到 13.10 后,每当我尝试打开 .py 文件时,IDLE 2.7.5 就会挂起。打开一个空白编辑器窗口,窗口标题为“idle”。此编辑器可用于创建新文件,但它从不显示我尝试打开的文件的内容,并且不会以我尝试过的任何方式关闭。我的系统上也有 IDLE(带有 3.3.2),它仍然可以正常工作。在我第一次尝试从 Ubuntu 13.04 更新到 13.10 时出现了问题,所以我认为这可能是问题的一部分,但全新的操作系统安装并没有解决问题。

4

2 回答 2

3

其中一个 idlelib 文件有错误。该文件必须是新的或在以前的版本中未使用,因为它只是一个命名问题。

转到:/usr/lib/python2.7/idlelib/IOBinding.py

如果这不是有效路径,请从命令行运行 idle,尝试加载文件,并查看堆栈跟踪以查看最终错误在哪里。

转到第 122 行并将第 122-128 行更改为以下内容:

def coding_spec(lst):
    """Return the encoding declaration according to PEP 263.

    Raise LookupError if the encoding is declared but unknown.
    """
    # Only consider the first two lines
    lst = lst.split("\n", 2)[:2]

(不需要评论,但保留已有的评论)。您会注意到,您所做的只是将变量名“str”(它是保留的,无论如何都不应该使用)更改为“lst”。

于 2013-12-03T02:22:04.843 回答
1

由于格式在回复中弄乱了,因此将我的评论重新发布到 Thaago。他是真正解决这个问题的人,对于我所说的内容,请先阅读他的评论。

对于 Python 2.7.5+,这不再是问题。看起来他们采用了您的解决方案,但应用它有点仓促。这样传递的变量是str,并且

str = str.split("\n", 2)[:2]

是正确的,但下一行,仍然是

for line in lst:

而不是

for line in str:

这就是我得到错误的地方,并在下一行将 lst 更改为 str 解决了这个问题。这对我来说似乎超级草率,我希望他们能解决这个问题。

如何为自己找到新错误的来源

顺便说一句,真正查看问题所在的方法是以这种方式开始“空闲”:打开终端类型空闲并按回车正常使用空闲并执行任何重现问题的操作。就我而言,只需单击“文件”->“最近的文件”并打开我的最后一个文件。

当它搞砸时,错误将出现在您用于打开空闲的终端中。

于 2014-01-22T06:53:13.507 回答