IDLE --- Python のエディタとシェル

ソースコード: Lib/idlelib/


IDLE は Python の統合開発環境で、学習用環境です。

IDLE は次のような特徴があります:

  • クロスプラットホーム: Windows, Unix, macOS で動作します

  • コード入力、出力、エラーメッセージの色付け機能を持った Python shell (対話的インタプリタ) ウィンドウ

  • 多段 Undo、 Python 対応の色づけ、自動的な字下げ、呼び出し情報の表示、自動補完、他たくさんの機能をもつマルチウィンドウ・テキストエディタ

  • 任意のウィンドウ内での検索、エディタウィンドウ内での置換、複数ファイルを跨いだ検索 (grep)

  • 永続的なブレイクポイント、ステップ実行、グローバルとローカル名前空間の視覚化機能を持ったデバッガ

  • 設定、ブラウザ群、ほかダイアログ群

IDLE アプリケーションは idlelib パッケージで実装されています。

これは optional module です。 お使いの CPython に含まれていない場合は、配布元 (Python を提供した組織や人) のドキュメントを確認してください。 配布元の方は オプションのモジュールの要件 を参照してください。

編集とナビゲーション

Editor ウィンドウ

設定や起動方法によっては、IDLE の起動時に Editor ウィンドウが開きます。 その後は File メニューを使ってください。 同じファイルを開ける Editor ウィンドウは 1 つだけです。

タイトルバーには、ファイル名、フルパス、およびそのウィンドウを実行している Python と IDLE のバージョンを表示します。 ステータスバーには行番号 ('Ln') と列番号 ('Col') を表示します。 行番号は 1 から、列番号は 0 から始まります。

IDLE は、既知の .py* 拡張子を持つファイルを Python コードとして扱い、他のファイルはそうではないとみなします。 Python コードは Run メニューで実行します。

キーバインディング

IDLE の挿入カーソルは、文字と文字の間にある細い縦棒です。 文字を入力すると、挿入カーソルとその右にあるものすべてが 1 文字分右に移動し、空いた場所に新しい文字が入ります。

文字以外のいくつかのキーは、カーソルを移動し、場合によっては文字を削除します。 削除したテキストはクリップボードに入りませんが、IDLE には取り消しの履歴があります。 このドキュメントのキーの説明では、'C' は Windows と Unix では Control キー、macOS では Command キーを指します。 (これらの説明はすべて、キーの割り当てを変更していないことを前提としています。)

  • 矢印キーは、カーソルを 1 文字または 1 行移動します。

  • C-LeftArrow と C-RightArrow は、1 単語分左または右に移動します。

  • Home と End は、行の先頭または末尾に移動します。

  • Page Up と Page Down は、1 画面分上または下に移動します。

  • C-Home と C-End は、ファイルの先頭または末尾に移動します。

  • Backspace と Del (または C-d) は、前または後の 1 文字を削除します。

  • C-Backspace と C-Del は、左または右の 1 単語を削除します。

  • C-k は、カーソルより右側にあるものをすべて削除 (kill) します。

標準的なキーバインディング (C-c がコピーで C-v がペースト、など) は機能するかもしれません。キーバインディングは Configure IDLE ダイアログで選択します。

自動的な字下げ

ブロックの始まりの文の後、次の行は 4 つの空白 (Python Shell ウィンドウでは、一つのタブ) で字下げされます。 あるキーワード (break、return など) の後では、次の行は字下げが解除 (dedent) されます。 先頭の字下げでは、 Backspace は 空白があれば最大 4 つ削除します。 Tab はインデント幅に対応する数の空白 (Python Shell ウィンドウでは一つのタブ) を挿入します。 現在、タブは Tcl/Tk の制約のため 4 つの空白に固定されています。

Format メニュー の indent/dedent region コマンドも参照してください。

検索と置換

選択範囲があれば、そのテキストが検索対象になります。 ただし、検索は行末の改行を除いた各行の中でだけ行うため、1 行内の選択範囲だけが使えます。 [x] Regular expression にチェックを入れると、検索対象を Python の re モジュールの規則に従って解釈します。

補完 (Completions)

要求があり、候補が利用できる場合は、モジュール名、クラスや関数の属性、ファイル名を補完します。 どの方法で要求しても、既存の名前を含む補完ボックスが表示されます (例外は下の Tab による補完を参照)。 ボックスの表示中は、文字の入力や削除、Up、Down、PageUp、PageDown、Home、End キー、 またはボックス内のシングルクリックによって、補完する名前とハイライトされる項目を変更できます。 Escape、Enter、Tab の 2 回押し、またはボックスの外のクリックでボックスを閉じます。 ボックス内でダブルクリックすると、項目を選択して閉じます。

ボックスを開く方法の 1 つは、きっかけとなる文字を入力して所定の時間待つことです。 デフォルトは 2 秒で、設定ダイアログで変更できます。 (自動表示を防ぐには、待ち時間を 100000000 ミリ秒などの大きな値に設定します。) インポート済みのモジュール名やクラス・関数の属性では、'.' を入力します。 ルートディレクトリ内のファイル名では、開き引用符の直後に os.sep または os.altsep を入力します。 (Windows では、その前にドライブを指定できます。) ディレクトリ名と区切り文字を入力すると、サブディレクトリに進みます。

待たずに開きたい場合や一度ボックスを閉じた後は、Edit メニューの Show Completions で補完ボックスをすぐに開けます。 デフォルトのショートカットキーは C-space です。 開く前に目的の名前の先頭部分を入力すると、最初に一致する候補、または近い候補を表示します。 ボックスを表示した後に先頭部分を入力しても同じ結果になります。 引用符の後で Show Completions を使うと、ルートディレクトリではなく現在のディレクトリのファイル名を補完します。

先頭部分を入力してから Tab を押すと、通常は Show Completions と同じ動作になります (先頭部分がなければインデントします)。 ただし、一致する候補が 1 つだけの場合は、ボックスを開かずにその候補を編集テキストに挿入します。

文字列の外で、前に '.' がない状態で Show Completions を実行するか、先頭部分を入力して Tab を押すと、 キーワード、組み込みの名前、利用可能なモジュールレベルの名前を含むボックスを開きます。

Shell ではなく Editor でコードを編集している場合、コードを実行してその後 Shell を再起動しなければ、利用可能なモジュールレベルの名前を増やせます。 これは、ファイルの先頭に import 文を追加した後で特に便利です。 属性の補完候補も増えます。

補完ボックスは最初、'_' で始まる名前や、モジュールの場合は '__all__' に含まれない名前を表示しません。 ボックスを開く前でも後でも、'.' の後に '_' を入力すると、隠れている名前にアクセスできます。

呼び出しヒント (Calltips)

アクセス可能な 関数の名前の後に ( を入力すると、呼び出しヒントを自動で表示します。 関数名を表す式には、ドットや添字を含められます。 ヒントをクリックするか、カーソルを引数の範囲外へ移動するか、) を入力するまで表示されます。 カーソルが定義の引数部分にあるときは、Edit メニューの Show Call Tip を選ぶか、そのショートカットを入力して呼び出しヒントを表示できます。

呼び出しヒントには、関数のシグネチャと docstring を表示します。 docstring は最初の空行、または空行以外の 5 行目までを表示します。 (一部の組み込み関数には、取得できるシグネチャがありません。) シグネチャ内の '/' はその前の引数を位置だけで渡すことを、'*' はその後の引数を名前 (キーワード) だけで渡すことを示します。 詳細は変更されることがあります。

Shell でアクセスできる関数は、最後の再起動以降にユーザープロセスにインポートしたモジュール (IDLE 自身がインポートしたものも含みます) と、実行した定義によって決まります。

例えば、Shell を再起動して itertools.count( と入力してください。 IDLE が自分で使うためにユーザープロセスに itertools をインポートしているので、呼び出しヒントが表示されます (この動作は変更される可能性があります)。 turtle.write( と入力しても、何も表示されません。 IDLE 自身は turtle をインポートしないからです。 メニュー項目やショートカットでも何も起こりません。 import turtle と入力してください。 それ以降は、turtle.write( で呼び出しヒントを表示できます。

Editor では、ファイルを実行するまで import 文は効果を持ちません。 import 文を書いた後、関数定義を追加した後、あるいは既存のファイルを開いた後に、ファイルを実行するとよいでしょう。

ブロックの整形

Reformat Paragraph は、同じインデントで連続した空行でないコメントのブロック (「段落」)、複数行文字列内の同様のテキストブロック、またはその一部として選択した範囲の折り返しを整えます。 必要に応じて空行を追加し、文字列とコードを分離してください。 選択範囲に行の一部が含まれる場合は、その行全体に範囲を広げます。 整形後の行は元と同じインデントを持ち、全体の長さは最大 N 列 (文字) になります。 N のデフォルト値 72 は、IDLE Settings の Window タブで変更できます。

コードコンテキスト

Python コードを含む Editor ウィンドウでは、コードコンテキストの表示を切り替えて、ウィンドウ上部のペインを表示または非表示にできます。 このペインを表示すると、class、def、if などのキーワードで始まるブロックの開始行のうち、スクロールによって見えなくなったものを固定して表示します。 ペインのサイズは、現在のすべての階層のコンテキストを表示するために必要に応じて伸縮します。 最大行数は Configure IDLE ダイアログで設定し、デフォルトは 15 行です。 表示するコンテキスト行がない状態で機能を有効にすると、空行を 1 行表示します。 コンテキストペインの行をクリックすると、その行を Editor の先頭に移動します。

コンテキストペインの文字色と背景色は、Configure IDLE ダイアログの Highlights タブで設定できます。

Shell ウィンドウ

IDLE の Shell では、文全体を入力、編集し、履歴から呼び出せます。 (ほとんどのコンソールや端末では、一度に扱えるのは 1 つの物理行だけです。)

1 行の文を実行するには、行内のどこかにカーソルを置いて Return を押します。 バックスラッシュ (\) で行を継続している場合は、最後の物理行にカーソルを置く必要があります。 複数行の複合文を実行するには、文の後に空行を入力します。

Shell にコードを貼り付けても、上記のように Return を押すまでコンパイルも実行も行いません。 実行前に貼り付けたコードを編集できます。 複数の文を Shell に貼り付けると、それらを 1 つの文としてコンパイルしようとして SyntaxError になります。

RESTART を含む行は、ユーザーコードの実行プロセスが再起動されたことを意味します。 これは、実行プロセスがクラッシュしたとき、Shell メニューから再起動を要求したとき、または Editor ウィンドウのコードを実行したときに起こります。

前の各節で説明した編集機能は、対話的にコードを入力するときにも使えます。 IDLE の Shell ウィンドウでは、さらに次の操作ができます。

  • C-c は文の実行の中断を試みます (失敗することもあります)。

  • >>> プロンプトで C-d を入力すると、Shell を閉じます。

  • Alt-p と Alt-n (macOS では C-p と C-n) は、入力済みのテキストに一致する以前の文のうち、前または次のものを現在のプロンプトに呼び出します。

  • 以前の文の上にカーソルを置いて Return を押すと、その文をプロンプトに入力済みのテキストの後に追加します。

テキストの色

IDLE のデフォルトは白地に黒い文字ですが、特別な意味を持つテキストには色を付けます。 Shell では、Shell の出力、Shell のエラー、ユーザーの出力、ユーザーのエラーが対象です。 Shell のプロンプトや Editor 内の Python コードでは、キーワード、組み込みクラスと関数の名前、class と def の後の名前、文字列、コメントが対象です。 すべてのテキストウィンドウでは、カーソル (ある場合)、検索で見つかったテキスト (可能な場合)、選択されたテキストが対象です。

IDLE は、パターンマッチング文の ソフトキーワード match、case、_ もハイライトします。 ただし、このハイライトは完全ではなく、case パターンの一部の _ など、まれな場合に誤って表示します。

このテキストの色付けはバックグラウンドで行われるため、たまに色が付いてない状態が見えてしまいます。カラースキームは、 Configure IDLE [IDLE の設定] ダイアログの Highlighting タブで変更できます。ただし、エディタ内のデバッガブレークポイント行のマーキングと、ポップアップとダイアログないのテキストの色は、ユーザーにより変更することはできません。

起動とコードの実行

-s オプションとともに起動すると、IDLE は環境変数 IDLESTARTUP か PYTHONSTARTUP で参照されているファイルを実行します。 IDLE はまず IDLESTARTUP をチェックし、あれば参照しているファイルを実行します。 IDLESTARTUP が無ければ、IDLE は PYTHONSTARTUP をチェックします。これらの環境変数で参照されているファイルは、IDLE シェルでよく使う関数を置いたり、一般的なモジュールの import 文を実行するのに便利です。

加えて、Tk もスタートアップファイルがあればそれをロードします。その Tk のファイルは無条件にロードされることに注意してください。このファイルは .Idle.py で、ユーザーのホームディレクトリから探されます。このファイルの中の文は Tk の名前空間で実行されるので、IDLE の Python シェルで使う関数を import するのには便利ではありません。

コマンドラインでの使用

IDLE は、さまざまなオプションを指定してコマンドラインから起動できます。 一般的な構文は次のとおりです。

python -m idlelib [options] [file ...]

以下のオプションを使えます。

-c <command>

指定した Python コマンドを Shell ウィンドウで実行します。 例えば -c "print('Hello, World!')" を渡します。 Windows では、例のように外側の引用符をダブルクォートにする必要があります。

-d

デバッガを有効にし、Shell ウィンドウを開きます。

-e

Editor ウィンドウを開きます。

-h

有効なオプションの組み合わせを示すヘルプメッセージを表示して終了します。

-i

Shell ウィンドウを開きます。

-r <file>

指定したファイルを Shell ウィンドウで実行します。

-s

Shell ウィンドウを開く前に、環境変数 IDLESTARTUP または PYTHONSTARTUP で指定した起動ファイルを実行します。

-t <title>

Shell ウィンドウのタイトルを設定します。

-

Shell ウィンドウで標準入力を読み込んで実行します。 このオプションは、引数より前の最後のオプションとして指定する必要があります。

引数を指定した場合:

  • If -, -c, or -r is used, all arguments are placed in sys.argv[1:], and sys.argv[0] is set to '', '-c', or '-r' respectively. No editor window is opened, even if that is the default set in the Options dialog.

  • それ以外の場合、引数は編集のために開くファイルとして扱われ、sys.argv には IDLE 自身に渡した引数が反映されます。

起動の失敗

IDLE は、IDLE の GUI プロセスとユーザーコードの実行プロセスとの通信にソケットを使います。 Shell の起動時と再起動時には、接続を確立する必要があります (再起動時は「RESTART」という区切り行が表示されます)。 ユーザープロセスが GUI プロセスへの接続に失敗すると、通常は「cannot connect」メッセージを含む Tk のエラーボックスが表示され、この節を参照するよう案内します。 その後、プロセスは終了します。

Unix システムでの接続失敗の原因の 1 つは、ネットワーク設定内のマスカレード規則の誤りです。 端末から IDLE を起動すると、** Invalid host: で始まるメッセージが表示されます。 有効な値は 127.0.0.1 (idlelib.rpc.LOCALHOST) です。 一方の端末ウィンドウで tcpconnect -irv 127.0.0.1 6543 を、別のウィンドウで tcplisten <same args> を実行して診断できます。

よくある失敗の原因は、random.py や tkinter.py など、標準ライブラリのモジュールと同じ名前を持つ利用者作成のファイルです。 実行しようとしているファイルと同じディレクトリにそのようなファイルがあると、IDLE は標準ライブラリのファイルをインポートできません。 現在の対処方法は、利用者が作成したファイルの名前を変更することです。

以前ほど多くはありませんが、ウイルス対策やファイアウォールのプログラムが接続を妨げることがあります。 そのプログラムで接続を許可する設定ができない場合は、IDLE を動作させるために無効にする必要があります。 この内部接続のデータは外部ポートから見えないため、許可しても安全です。 同様に、ネットワークの設定ミスが接続を妨げる場合もあります。

Python installation issues occasionally stop IDLE: multiple versions can clash, or a single installation might need admin access. If one undo the clash, or cannot or does not want to run as admin, it might be easiest to completely remove Python and start over.

残存する pythonw.exe プロセスが問題になる場合があります。 Windows では、タスクマネージャーでそのようなプロセスがないか確認し、あれば停止してください。 プログラムのクラッシュや Keyboard Interrupt (control-C) による再起動で、接続に失敗することがあります。 一時的な問題なら、エラーボックスを閉じるか、Shell メニューの Restart Shell を使うと解決する場合があります。

IDLE は最初の起動時に、~/.idlerc/ (~ はユーザーのホームディレクトリ) のユーザー設定ファイルを読み込もうとします。 問題があれば、エラーメッセージが表示されるはずです。 偶発的なディスク障害を除けば、ファイルを手で編集しないことでこの問題を防げます。 代わりに、Options の設定ダイアログを使ってください。 ユーザー設定ファイルにエラーが起きた場合は、そのファイルを削除して設定ダイアログで設定し直すのが最善の場合があります。

IDLE がメッセージを表示せずに終了し、コンソールから起動していなかった場合は、コンソールや端末から python -m idlelib で起動し、エラーメッセージが表示されるか確認してください。

8.6.11 より古い tcl/tk を使う Unix 系システム (About IDLE で確認できます) では、特定のフォントの特定の文字が原因で tk が異常終了し、端末にメッセージを表示する場合があります。 そのような文字を含むファイルを編集するために IDLE を起動したときにも、後からその文字を入力したときにも起こりえます。 tcl/tk を更新できない場合は、より適切に動作するフォントを使うよう IDLE を設定し直してください。

ユーザーコードの実行

まれな例外を除き、IDLE で Python コードを実行した結果は、標準的な方法、つまりテキストモードのシステムコンソールや端末ウィンドウから Python で直接実行した結果と同じになるようにしています。 ただし、インターフェースや動作の違いが、目に見える結果に影響することがあります。 例えば、sys.modules は最初からより多くの項目を含み、threading.active_count() は 1 ではなく 2 を返します。

デフォルトでは、IDLE は Shell や Editor を動かすユーザーインターフェースのプロセスとは別の OS プロセスで、ユーザーコードを実行します。 実行プロセスでは、sys.stdin、sys.stdout、sys.stderr を、Shell ウィンドウから入力を受け取り、そこへ出力を送るオブジェクトに置き換えます。 sys.__stdin__、sys.__stdout__、sys.__stderr__ に保存された元の値は変更しませんが、None の場合もあります。

あるプロセスから別のプロセスのテキストウィジェットへ表示出力を送る処理は、同じプロセスでシステム端末へ出力するより遅くなります。 特に複数の引数を表示する場合は、各引数の文字列、各区切り文字、改行を別々に送るため、影響が大きくなります。 開発中は通常問題になりませんが、IDLE でより速く表示したい場合は、まとめて表示したいものをすべて書式化して連結し、1 つの文字列として出力してください。 書式文字列と str.join() は、フィールドや行をまとめるのに役立ちます。

実行プロセス内で作成したサブプロセスは、ユーザーコードが直接作成したものでも multiprocessing などのモジュールが作成したものでも、IDLE が置き換えた標準ストリームを引き継ぎません。 このようなサブプロセスが sys.stdin からの input や、sys.stdout または sys.stderr への print、write を使う場合は、コマンドラインウィンドウで IDLE を起動してください。 (Windows では pythonw や pyw ではなく python や py を使います。) これにより、さらに作られたサブプロセスは、そのウィンドウを入出力に使います。

ユーザーコードが importlib.reload(sys) などで sys をリセットすると、IDLE による変更が失われ、キーボードからの入力と画面への出力が正しく動作しなくなります。

Shell がフォーカスを持つときは、Shell がキーボードと画面を制御します。 通常はこの違いを意識する必要はありませんが、キーボードや画面に直接アクセスする関数は動作しません。 キーが押されたかどうかや、押されたキーを調べるシステム固有の関数などが該当します。

実行プロセスで動く IDLE のコードは、通常なら存在しないフレームを呼び出しスタックに追加します。 追加のスタックフレームの影響を減らすため、IDLE は sys.getrecursionlimit と sys.setrecursionlimit をラップします。

ユーザーコードが直接、または sys.exit の呼び出しで SystemExit を送出すると、IDLE は終了せずに Shell のプロンプトに戻ります。

Shell でのユーザー出力

プログラムがテキストを出力したときの結果は、対応する出力デバイスによって決まります。 IDLE がユーザーコードを実行する場合、sys.stdout と sys.stderr は IDLE の Shell の表示領域につながっています。 その機能の一部は、内部で使う Tk の Text ウィジェットを引き継いだものです。 その他はプログラムで追加したものです。 違いが重要になる場面では、Shell は本番での実行より開発に適した設計になっています。

例えば、Shell は出力を捨てません。 無制限に Shell へ出力するプログラムは、最終的にメモリを使い切り、メモリエラーになります。 一方、システムのテキストウィンドウには、出力の最後の n 行だけを保持するものがあります。 例えば Windows のコンソールは、ユーザーが設定できる 1 ~ 9999 行を保持し、デフォルトは 300 行です。

Tk の Text ウィジェット、したがって IDLE の Shell は、Unicode の BMP (基本多言語面) に含まれる文字 (コードポイント) を表示します。 どの文字を正しい字形で表示し、どの文字を代替の四角で表示するかは、OS とインストールされたフォントによって決まります。 タブ文字の後のテキストは、次のタブ位置から始まります (タブ位置は 8「文字」ごとにあります)。 改行文字の後のテキストは、新しい行に表示されます。 その他の制御文字は、OS とフォントに応じて無視されるか、空白、四角、その他の形で表示されます。 (このような出力の中で矢印キーを使ってテキストカーソルを動かすと、間隔が予想外の動きをする場合があります。)

>>> s = 'a\tb\a<\x02><\r>\bc\nd'  # 22 文字を入力します。
>>> len(s)
14
>>> s  # repr(s) を表示
'a\tb\x07<\x02><\r>\x08c\nd'
>>> print(s, end='')  # s をそのまま表示します。
# 結果は OS とフォントによって異なります。
# 試してみてください。

The repr function is used for interactive echo of expression values. It returns an altered version of the input string in which control codes, some BMP codepoints, and all non-BMP codepoints are replaced with escape codes. As demonstrated above, it allows one to identify the characters in a string, regardless of how they are displayed.

通常の出力とエラー出力は、一般にコード入力からも互いからも分離され、別々の行に表示されます。 それぞれに異なるハイライト色を付けます。

SyntaxError のトレースバックでは、エラーを検出した場所を示す通常の '^' の代わりに、テキストをエラーのハイライト色で表示します。 ファイルから実行したコードが他の例外を起こした場合は、トレースバックの行を右クリックして IDLE の Editor の対応する行へ移動できます。 必要ならファイルを開きます。

Shell には、出力行を「Squeezed text」ラベルに折りたたむ特別な機能があります。 N 行 (デフォルトは 50 行) を超える出力は自動で折りたたみます。 N は Settings ダイアログの General ページの PyShell セクションで変更できます。 それより少ない行の出力も、右クリックで折りたためます。 スクロールが遅くなるほど長い行に対して便利です。

折りたたんだ出力は、ラベルをダブルクリックするとその場で展開します。 ラベルを右クリックして、クリップボードに送ったり、別の表示ウィンドウに開いたりすることもできます。

tkinter アプリケーションの開発

tkinter プログラムを開発しやすくするため、IDLE は意図的に標準の Python と異なる動作をします。 標準の Python で import tkinter as tk; root = tk.Tk() と入力しても、何も表示されません。 IDLE で同じことを入力すると、tk ウィンドウが表示されます。 標準の Python では、ウィンドウを見るために root.update() も入力する必要があります。 IDLE は、同じ処理をバックグラウンドで 1 秒あたり約 20 回、つまり約 50 ミリ秒ごとに行います。 次に b = tk.Button(root, text='button'); b.pack() と入力してください。 この場合も、標準の Python では root.update() と入力するまで見た目は変わりません。

ほとんどの tkinter プログラムは root.mainloop() を実行します。 この呼び出しは通常、tk アプリケーションが破棄されるまで戻りません。 python -i または IDLE の Editor からプログラムを実行した場合、mainloop() が戻るまで >>> の Shell プロンプトは表示されず、 戻った時点では対話的に操作する対象が残っていません。

IDLE の Editor から tkinter プログラムを実行する場合は、mainloop の呼び出しをコメントアウトできます。 そうすると Shell プロンプトがすぐに表示され、動作中のアプリケーションを対話的に操作できます。 標準の Python で実行するときは、mainloop の呼び出しを忘れずに有効に戻してください。

サブプロセスを起こさずに起動する

デフォルトでは、IDLE でのユーザコードの実行は、内部的なループバックインターフェイスを使用する、ソケット経由の分離されたサブプロセスで行われます。この接続は外部からは見えませんし、インターネットとのデータの送受信は行われません。ファイアウォールソフトウェアの警告が発生しても、無視して構いません。

ソケット接続の確立を試みて失敗した場合、IDLE によって通知されます。このような失敗は一過性の場合もありますが、永続的に失敗する場合は、ファイアウォールが接続をブロックしているか、特定のシステムの設定が誤っていることが原因かもしれません。問題が解決するまでは、 IDLE をコマンドラインオプション -n で起動することもできます。

IDLE を -n コマンドラインスイッチを使って開始した場合、IDLE は単一のプロセス内で動作し、RPC Python 実行サーバを走らせるサブプロセスを作りません。これは、プラットフォーム上で Python がサブプロセスや RPC ソケットインターフェイスを作れない場合に有用かもしれません。ただし、このモードではユーザコードが IDLE 自身から隔離されませんし、Run/Run Module (F5) 選択時に環境が再起動されてまっさらな状態になることもありません。コードを変更した場合、影響するモジュールを reload() しないといけませんし、変更を反映するには、すべての特定の項目 (from foo import baz など) を再インポートしないといけません。これらの理由から、可能なら常にデフォルトのサブプロセスを起こすモードで IDLE を起動するのが吉です。

バージョン 3.4 で非推奨.

ヘルプと設定

ヘルプソース

Help メニューの「IDLE Help」は、ライブラリリファレンスの IDLE の章を整形された HTML として表示します。 読み取り専用の tkinter テキストウィンドウに表示される内容は、ウェブブラウザーで見たものに近い形です。 マウスホイール、スクロールバー、または上下の矢印キーの長押しで移動できます。 TOC (目次) ボタンをクリックし、開いたボックスから節の見出しを選ぶこともできます。

Help メニューの「Python Docs」は、チュートリアルを含む豊富なヘルプを docs.python.org/x.y で開きます。 'x.y' は、現在実行している Python のバージョンです。 システムにオフラインのドキュメントがあれば (インストール時の選択肢となっている場合があります)、代わりにそれを開きます。

Configure IDLE ダイアログの General タブを使って、任意の URL をいつでもヘルプメニューに追加したり、そこから削除したりできます。

Setting preferences [お好み設定]

フォント、ハイライト、キー、全般の設定は、Options メニューの Configure IDLE で変更できます。 デフォルトと異なるユーザー設定は、ユーザーのホームディレクトリにある .idlerc ディレクトリに保存されます。 不正なユーザー設定ファイルによる問題は、.idlerc 内のファイルを 1 つ以上編集または削除して解決できます。

Font タブのテキストサンプルでは、複数の言語のさまざまな文字について、フォントの種類とサイズによる表示の違いを確認できます。 サンプルを編集して、確認したい他の文字を追加してください。 サンプルを使って等幅フォントを選択できます。 Shell や Editor で特定の文字に問題がある場合は、サンプルの先頭にその文字を追加し、まずサイズを、次にフォントを変えてみてください。

Highlights タブと Keys タブで、組み込みまたは独自の配色テーマとキー設定を選びます。 新しい組み込みの配色テーマやキー設定を古い IDLE で使うには、新しい独自のテーマやキー設定として保存してください。 そうすると、古い IDLE からも使えるようになります。

macOS での IDLE

System Preferences の Dock で、「Prefer tabs when opening documents」を「Always」に設定できます。 この設定は IDLE が使う tk/tkinter GUI フレームワークと互換性がなく、IDLE の一部の機能が動作しなくなります。

Extensions [拡張]

IDLE には拡張機能の仕組みがあります。 拡張機能の設定は、設定ダイアログの Extensions タブで変更できます。 詳しくは idlelib ディレクトリ内の config-extensions.def の先頭を参照してください。 現在、デフォルトの拡張機能は、テストにも使われるサンプルの zzdummy だけです。

idlelib --- IDLE アプリケーションの実装

ソースコード: Lib/idlelib


Lib/idlelib パッケージは IDLE アプリケーションを実装しています。 IDLE の使い方については、このページの他の節を参照してください。

idlelib 内のファイルについては、idlelib/README.txt に説明があります。 idlelib 内でファイルを開くか、IDLE のメニューで Help => About IDLE をクリックして参照してください。 このファイルには、IDLE のメニュー項目と、それを実装するコードとの対応も記載されています。 「Startup」に挙げられたファイルを除き、idlelib のコードは、機能変更がバックポートされうるという意味で「非公開」です (PEP 434 を参照)。