Idle-python2.7 的包错误吗?

Idle-python2.7 的包错误吗?

我在 Ubuntu 13.10 中运行 python 2.7,idle(idle-python2.7)已停止工作。每当我尝试在编辑器窗口中打开文件时,它都是空白的,尽管该文件确实存在并且不为空/空白。此外,在此之后无法关闭空闲状态,除非通过终端 kill 命令。

  • Idle 之前运行良好。这个问题在我安装了一些东西后出现,包括 idlex、各种 scipy 模块和 mpmath,但在尝试了几种方法修复后,发现这似乎是由 Ubuntu 官方的 idle 包引起的。

当我尝试在空闲状态下打开一个文件时,终端出现此错误:

Exception in Tkinter callback
[...lines ommitted for brevity...]
File "/usr/lib/python2.7/idlelib/IOBinding.py", line 129, in coding_spec
    for line in lst:
NameError: global name 'lst' is not defined

如果你看一下代码,就会发现它似乎是一个明显的错误:确实lst在函数中没有定义coding_spec。此外,源文件 IOBinding.py 中的http://fossies.org/dox/Python-2.7.5/IOBinding_8py_source.html有所不同,并没有显示出问题。

我认为最近的某个软件包以某种方式覆盖了该文件,我尝试了许多方法,包括从 synaptic 重新安装所有 Python 软件包,但错误的 IOBinding.py 仍然存在。我认为问题出在软件包本身,因为我最终验证sudo apt-get remove idle空闲库目录是空的,并重新安装sudo apt-get install idle;但错误的 IOBinding.py 文件又回来了。

事实上,我可以通过简单地在代码中替换 来让空闲状态再次工作lststr但对我来说这显然是不行的。我也不太愿意尝试从源 Python 发行版中替换该文件,因为其他文件可能有误。我想从官方包中获取正确的文件。

答案1

这是一个‘我也是’的问题,没有解决方案。

...直到我搜索到具体的错误。

编辑文件

/usr/lib/python2.7/idlelib/IOBinding.py

并在coding_spec函数中替换此行:

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

和:

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

http://ubuntuforums.org/showthread.php?t=2182753

相关内容