IDLE(Python 2.7.5)不再打开.py文件
从Ubuntu 13.04更新到13.10后,只要我尝试打开一个.py文件,IDLE 2.7.5就会挂起。一个空白编辑器窗口以“空闲”作为窗口的标题打开。这个编辑器可以用来创建新文件,但它永远不会显示我试图打开的文件的内容,并且不会以我尝试过的任何方式关闭。我的系统上也有IDLE(3.3.2),并且它仍然正常工作。在我第一次尝试从Ubuntu 13.04更新到13.10时出现了问题,所以我认为这可能是问题的一部分,但新的操作系统安装并未解决问题。IDLE(Python 2.7.5)不再打开.py文件
其中一个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'。
对于Python 2.7.5+,这不再是问题。看起来他们采取了你的解决方案,但有点仓促应用了它。使得传递的变量是STR,和 STR = str.split( “\ n” 个,2)[:2] 是适当的,但下一行,仍然是 用于线在LST: 而非 为line in str: 这就是我得到错误并在下一行中更改第一行以解决问题的地方。 – Sojurn
将我的评论重新发布到Thaago,因为格式化在回复中搞砸了。他是那个真正解决了这个问题的人,为了我所说的内容,先阅读他的评论。
随着Python 2.7.5+,这已不再是问题。看起来他们采取了你的解决方案,但有点仓促应用了它。这样传递的变量是海峡和
str = str.split("\n", 2)[:2]
是正确的,但下一行,仍然是
for line in lst:
而不是
for line in str:
这就是我得到了错误并改变LST在下一行中解决问题。 对我来说这似乎过于草率,我希望他们解决这个问题。
如何找到新的错误的根源为自己
顺便说一下,要真正看到问题是启动“空闲”这样的方式: 打开终端 类型空闲,然后按回车 正常使用闲置,并做你所做的任何转载问题。在我的情况下,只需点击'文件' - >'最近的文件'并打开我的最后一个文件。
当它拧紧时,错误将在您用来打开空闲的终端中。
也许是时候看看其他编辑。 IDLE没问题,但是一旦你花了一些时间更好的东西,你就不会想回去。 –
是的,你可能是对的。我想我应该做更大更好的事情。任何个人经验的建议? – Kevin
如果您从命令行打开空闲,会发生什么情况? $ idle somefile.py ??有没有错误信息? –