
我在 Ubuntu 13.10 中運行 python 2.7,並且空閒 (idle-python2.7) 已停止工作。每當我嘗試在編輯器視窗中開啟文件時,它都是空白的,儘管該文件確實存在並且不為空/空白。此外,此後無法關閉空閒,除非透過終端終止命令。
- 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檔又回來了。
事實上,我可以透過簡單地在程式碼中替換lst
為來再次進行空閒工作str
,但對我來說,這顯然是一個禁忌。我對嘗試僅替換來源 python 發行版中的該文件也不滿意,因為其他文件可能是錯誤的。我想從官方包中獲取正確的文件。
答案1
這是“我也是”,沒有解決方案。
……直到我搜尋特定的錯誤。
編輯文件
/usr/lib/python2.7/idlelib/IOBinding.py
並替換coding_spec函數中的這一行:
str = str.split("\n", 2)[:2]
和:
lst = str.split("\n", 2)[:2]