
Ubuntu 13.10 で python 2.7 を実行していますが、idle (idle-python2.7) が動作を停止しました。エディター ウィンドウでファイルを開こうとすると、ファイルが存在し、空/空白ではないにもかかわらず、空白になります。さらに、この後、ターミナルの kill コマンドを使用しない限り、idle を閉じることはできません。
- 以前はアイドルは正常に動作していました。idlex、さまざまな scipy モジュール、mpmath など、いくつかのものをインストールした後に問題が発生しましたが、いくつかの方法で修復を試みた後、Ubuntu の公式アイドル パッケージが原因のようです。
アイドル状態でファイルを開こうとすると、ターミナルで次のエラーが発生します。
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には、Python 2.7.5 の IOBinding は、Python 2.7.5 の IOBinding と IOBinding の互換性のために必要です。異なっており、問題は表示されません。
最近のパッケージの1つが何らかの理由でファイルを上書きしたのではないかと考え、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]