IDLE(Python 2.7.5)不再打开.py文件

时间:2013-11-26 05:34:07

标签: python-3.3 python-idle ubuntu-13.10

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

2 个答案:

答案 0 :(得分:3)

其中一个idlelib文件中有错误。

这个文件在以前的版本中必须是新文件或未使用过,因为它只是一个命名问题。

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

如果这不是有效路径,请从命令行运行空闲,尝试加载文件,然后查看堆栈跟踪以查看最终错误的位置。

转到第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'。

答案 1 :(得分:1)

将我的评论重新发布到Thaago,因为格式化在回复中搞砸了。他是真正解决这个问题的人,也是我所谈论的语境,首先阅读他的评论。

使用Python 2.7.5+这不再是问题。看起来他们采取了你的解决方案,但有点仓促地应用它。因此传递的变量是str,和

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

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

for line in lst:

而不是

for line in str:

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

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

顺便提一下,通过这种方式真正了解问题在哪里开始“闲置”: 打开一个终端 键入idle并按Enter键 正常使用闲置,并做任何你重复发生的事情。在我的情况下,只需点击'文件' - > “最近的文件”并打开我的上一个文件。

当它拧紧时,错误将出现在您用来打开空闲的终端中。