2016-11-10 32 views
0

Oracle VB上でDebianベースのOSでAPT-GETアップデートを実行しました。それが実行されている間、私はIDLE 2.7.12(私は端末でそれを開いた)でいくつかのPythonコードを使いこなしました。更新が終わったら、コードを保存しようとしました。私はIDLEを開いた端末でエラーが出ました。これはIDLE 2.7.11/12 "NameError:グローバル名 'Toplevel'が定義されていません"

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1545, in __call__ 
    return self.func(*args) 
    File "/usr/lib/python2.7/idlelib/ScriptBinding.py", line 140, in run_module_event 
    filename = self.getfilename() 
    File "/usr/lib/python2.7/idlelib/ScriptBinding.py", line 205, in getfilename 
    self.editwin.io.save(None) 
    File "/usr/lib/python2.7/idlelib/IOBinding.py", line 345, in save 
    if self.writefile(self.filename): 
    File "/usr/lib/python2.7/idlelib/IOBinding.py", line 378, in writefile 
    chars = self.encode(self.text.get("1.0", "end-1c")) 
    File "/usr/lib/python2.7/idlelib/IOBinding.py", line 450, in encode 
    dialog = EncodingMessage(self.editwin.top, enc) 
    File "/usr/lib/python2.7/idlelib/IOBinding.py", line 76, in __init__ 
    self.root = top = Toplevel(master) 
NameError: global name 'Toplevel' is not defined 

Picture of my terminal with the error

起こる

[SAVE]、私は私のコードをロード

[email protected]:~# idle

アイドルが開き、私は私のコードを編集し、その後、私は[FILE]をクリックしてください:それはこのことを言います

私はすでにVBを再起動しようとしましたが、私はアンインストールし、オートキューイングしてから、無駄なくIDLEを再インストールしました。

+0

kaliは常に不安定版/テスト版です。それと一緒に暮らす。 –

+0

もう一つの解決策がなくても、より安定したバージョンに戻す方法があることを願っています。それが究極のケースでした。 – CoffeeWithCream

+0

IDLEバグ。タイトルの変更を説明する回答(書面による)を参照してください。 –

答えて

0

問題は、更新されたIDLEのバグです。 .../Lib/idlelib/IOBinding.pyの上部にある、たとえばimport tkFileDialogの前に、次のように追加します。 <enc>エンコードなり

Non-ASCII found, yet no encoding declared. Add a line like 
-*- coding: <enc> -*- 
Choose OK to save this file as <enc> 
Edit your general options to silence this warning 

例えばutf-8として:

from Tkinter import * 

はNameErrorは、次のメッセージで警告を表示する機能で発生しました。

それは、Python言語リファレンス、2.1.4項を指摘した場合、メッセージが初心者のための、より役に立つかもしれないと私には発生します。、エンコーディング宣言

このバグが原因のpython3で2.xの特定され、UTF -8は、エンコーディング宣言がない場合に使用されるデフォルトです。

+0

2.7.13で修正されました。 –

0

open IDLE。
オプション
設定IDLE
一般
セット 'デフォルトのソースエンコーディング':UTF-8

私は、Windows 10上でのPython 2.7.12を実行しているし、また、Ubuntuの16.04これは私の保存/クラッシュIDLE問題を解決どちらのOSでも

なぜ私はPython 2から3を捨てようとしているような気がしますか? jk。

関連する問題