IDLE —Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.7/library/idle
移動先:案内検索

アイドル

ソースコード: :source: `Lib / idlelib /`



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

IDLEには次の機能があります。

  • tkinter GUIツールキットを使用して、100%純粋なPythonでコーディングされています
  • クロスプラットフォーム:Windows、Unix、macOSでほぼ同じように機能します
  • コードの入力、出力、およびエラーメッセージの色付けを備えたPythonシェルウィンドウ(インタラクティブインタープリター)
  • 複数の取り消し、Pythonの色付け、スマートインデント、通話のヒント、オートコンプリート、その他の機能を備えたマルチウィンドウテキストエディター
  • 任意のウィンドウ内で検索し、エディターウィンドウ内で置き換え、複数のファイルを検索します(grep)
  • 永続的なブレークポイント、ステッピング、およびグローバル名前空間とローカル名前空間の表示を備えたデバッガー
  • 構成、ブラウザー、およびその他のダイアログ

編集とナビゲーション

エディタウィンドウ

IDLEは、設定やIDLEの起動方法によっては、起動時にエディターウィンドウを開く場合があります。 その後、[ファイル]メニューを使用します。 特定のファイルに対して開いているエディターウィンドウは1つだけです。

タイトルバーには、ファイルの名前、フルパス、ウィンドウを実行しているPythonとIDLEのバージョンが含まれています。 ステータスバーには、行番号( 'Ln')と列番号( 'Col')が含まれています。 行番号は1で始まります。 0の列番号。

IDLEは、既知の.py *拡張子を持つファイルにPythonコードが含まれ、他のファイルには含まれないことを前提としています。 [実行]メニューを使用してPythonコードを実行します。


キーバインディング

このセクションでは、「C」はWindowsおよびUnixの Control キー、およびmacOSの Command キーを指します。

  • Backspace は左側に削除します。 Del は右側に削除します

  • C-バックスペース残りの単語を削除します。 C-Del 右側の単語を削除

  • 矢印キーと Page Up / Page Down で移動できます

  • C-LeftArrow C-RightArrow は単語で移動します

  • ホーム / 終了行の先頭/末尾に移動

  • C-Home / C-End ファイルの開始/終了に移動

  • いくつかの便利なEmacsバインディングはTcl / Tkから継承されています。

    • Ca 行頭

    • Ce 行末

    • Ck キルライン(ただしクリップボードには入れません)

    • Cl 挿入ポイント周辺の中央ウィンドウ

    • Cb は、削除せずに1文字戻ります(通常、これにはカーソルキーを使用することもできます)

    • Cf は削除せずに1文字進みます(通常、これにはカーソルキーを使用することもできます)

    • Cp は1行上に移動します(通常、これにはカーソルキーを使用することもできます)

    • Cd 次の文字を削除


標準のキーバインド(コピーする Cc や貼り付ける Cv など)が機能する場合があります。 キーバインディングは、[IDLEの構成]ダイアログで選択されます。


自動インデント

ブロックを開くステートメントの後、次の行は4つのスペースでインデントされます(Pythonシェルウィンドウでは1つのタブで)。 特定のキーワード(ブレーク、リターンなど)の後、次の行は拒否されます。 先頭のインデントでは、 Backspace は、最大4つのスペースがある場合はそれを削除します。 Tab はスペースを挿入します(Pythonシェルウィンドウでは1つのタブ)。数はインデント幅によって異なります。 現在、Tcl / Tkの制限により、タブは4つのスペースに制限されています。

フォーマットメニューのインデント/ディデント領域コマンドも参照してください。


完了

組み込みおよびユーザー定義の両方の関数、クラス、およびクラスの属性の補完が提供されます。 ファイル名の補完も提供されます。

AutoCompleteWindow(ACW)は、「。」の後の事前定義された遅延(デフォルトは2秒)後に開きます。 または(文字列で)os.sepが入力されます。 これらの文字の1つ(および0個以上の他の文字)の後にタブを入力すると、継続の可能性が見つかった場合にACWがすぐに開きます。

入力された文字の可能な補完が1つしかない場合、 Tab はACWを開かずにその補完を提供します。

「完了の表示」は、完了ウィンドウを強制的に開きます。デフォルトでは、 C-space は完了ウィンドウを開きます。 空の文字列では、これには現在のディレクトリ内のファイルが含まれます。 空白行には、現在の名前空間に組み込まれているユーザー定義の関数とクラス、およびインポートされたモジュールが含まれます。 一部の文字が入力されている場合、ACWはより具体的にしようとします。

文字列を入力すると、ACWの選択は、それらの文字に最も近いエントリにジャンプします。 タブを入力すると、最も長いあいまいでない一致がエディターウィンドウまたはシェルに入力されます。 連続する2つのタブは、現在のACW選択を提供し、戻るかダブルクリックします。 カーソルキー、Page Up / Down、マウス選択、およびスクロールホイールはすべてACWで動作します。

「非表示」属性にアクセスするには、「。」の後に非表示の名前の先頭を入力します。例: '_'。 これにより、__all__が設定されたモジュール、またはクラスプライベート属性にアクセスできます。

完了と「単語の拡張」機能により、入力を大幅に節約できます。

現在、完了は名前空間内のものに制限されています。 __main__および sys.modules を経由しないエディターウィンドウ内の名前は見つかりません。 この状況を修正するには、インポートでモジュールを1回実行します。 IDLE自体がsys.modulesにかなりの数のモジュールを配置することに注意してください。デフォルトでは、多くのモジュールが見つかります。 reモジュール。

ACWが無制限にポップアップするのが気に入らない場合は、遅延を長くするか、拡張機能を無効にします。


コールチップ

アクセス可能な関数の名前の後にを入力すると、コールチップが表示されます。 名前式には、ドットと下付き文字を含めることができます。 コールチップは、クリックされるか、カーソルが引数領域の外に移動されるか、が入力されるまで残ります。 カーソルが定義の引数部分にある場合、メニューまたはショートカットにコールチップが表示されます。

コールチップは、関数のシグネチャとdocstringの最初の行で構成されます。 アクセス可能な署名のないビルトインの場合、コールチップは5行目または最初の空白行までのすべての行で構成されます。 これらの詳細は変更される場合があります。

accessible 関数のセットは、Idle自体によってインポートされたモジュールを含む、ユーザープロセスにインポートされたモジュール、および最後の再起動以降に実行された定義によって異なります。

たとえば、シェルを再起動してitertools.count(と入力します。 Idleがitertoolsをユーザープロセスにインポートして独自に使用するため、コールチップが表示されます。 (これは変更される可能性があります。)turtle.write(と入力すると、何も表示されません。 アイドルはカメをインポートしません。 メニューやショートカットも何もしません。 import turtleと入力すると、turtle.write(が機能します。

エディターでは、インポートステートメントはファイルを実行するまで効果がありません。 上部にimportステートメントを書き込んだ後にファイルを実行するか、編集する前に既存のファイルをすぐに実行することをお勧めします。


コードコンテキスト

Pythonコードを含むエディターウィンドウ内で、ウィンドウの上部にあるペインを表示または非表示にするために、コードコンテキストを切り替えることができます。 表示されている場合、このペインは、classdef、またはifキーワードで始まるブロックコードなど、他の方法ではスクロールして表示されないブロックコードの開始行をフリーズします。 ペインのサイズは、[IDLEの構成]ダイアログで定義された最大行数(デフォルトは15)まで、現在のすべてのレベルのコンテキストを表示するために必要に応じて拡大および縮小されます。 現在のコンテキスト行がなく、機能がオンになっている場合、1行の空白行が表示されます。 コンテキストペインの行をクリックすると、その行がエディターの上部に移動します。

コンテキストペインのテキストと背景色は、[IDLEの構成]ダイアログの[ハイライト]タブで構成できます。


Pythonシェルウィンドウ

IDLEのシェルを使用すると、完全なステートメントを入力、編集、および呼び出すことができます。 ほとんどのコンソールと端末は、一度に1つの物理回線でのみ機能します。

コードをシェルに貼り付けると、 Return がヒットするまで、コードはコンパイルされず、実行される可能性があります。 貼り付けたコードを最初に編集することができます。 複数のステートメントをシェルに貼り付けると、複数のステートメントが1つであるかのようにコンパイルされると、結果は SyntaxError になります。

前のサブセクションで説明した編集機能は、コードをインタラクティブに入力するときに機能します。 IDLEのシェルウィンドウは、次のキーにも応答します。

  • Cc がコマンドの実行を中断します

  • Cd はファイルの終わりを送信します。 >>>プロンプトで入力すると、ウィンドウが閉じます

  • Alt- / (単語の展開)はタイピングを減らすのにも役立ちます

    コマンド履歴

    • Alt-p は、入力したものと一致する前のコマンドを取得します。 macOSでは、 Cp を使用します。

    • Alt-n は次に取得します。 macOSでは、 Cn を使用します。

    • Return は、前のコマンドでそのコマンドを取得している間


テキストの色

アイドル状態のデフォルトは白地に黒ですが、テキストに特別な意味で色を付けます。 シェルの場合、これらはシェル出力、シェルエラー、ユーザー出力、およびユーザーエラーです。 Pythonコードの場合、シェルプロンプトまたはエディターで、これらはキーワード、組み込みのクラス名と関数名、classdefに続く名前、文字列、およびコメントです。 どのテキストウィンドウでも、これらはカーソル(存在する場合)、見つかったテキスト(可能な場合)、および選択されたテキストです。

テキストの色付けは背景で行われるため、色付けされていないテキストが表示されることがあります。 配色を変更するには、[IDLEの構成]ダイアログの[強調表示]タブを使用します。 エディターのデバッガーブレークポイント行とポップアップおよびダイアログのテキストのマーキングは、ユーザーが構成することはできません。


起動とコード実行

-sオプションで起動すると、IDLEは環境変数 IDLESTARTUPまたは PYTHONSTARTUP によって参照されるファイルを実行します。 IDLEは最初にIDLESTARTUPをチェックします。 IDLESTARTUPが存在する場合、参照されているファイルが実行されます。 IDLESTARTUPが存在しない場合、IDLEはPYTHONSTARTUPをチェックします。 これらの環境変数によって参照されるファイルは、IDLEシェルから頻繁に使用される関数を格納したり、インポートステートメントを実行して共通モジュールをインポートしたりするのに便利な場所です。

さらに、Tkは、スタートアップファイルが存在する場合はそれもロードします。 Tkファイルは無条件にロードされることに注意してください。 この追加ファイルは.Idle.pyであり、ユーザーのホームディレクトリで検索されます。 このファイルのステートメントはTk名前空間で実行されるため、このファイルはIDLEのPythonシェルから使用する関数をインポートするのには役立ちません。

コマンドラインの使用法

idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...

-c command  run command in the shell window
-d          enable debugger and open shell window
-e          open editor window
-h          print help message with legal combinations and exit
-i          open shell window
-r file     run file in shell window
-s          run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window
-t title    set title of shell window
-           run stdin in shell (- must be last option before args)

引数がある場合:

  • --c、またはrを使用する場合、すべての引数はsys.argv[1:...]に配置され、sys.argv[0]は [に設定されます。 X113X]、'-c'、または'-r'。 [オプション]ダイアログでデフォルトに設定されている場合でも、エディタウィンドウは開かれません。
  • それ以外の場合、引数は編集用に開かれたファイルであり、sys.argvはIDLE自体に渡された引数を反映します。


起動失敗

IDLEは、ソケットを使用してIDLEGUIプロセスとユーザーコード実行プロセスの間で通信します。 シェルが起動または再起動するたびに、接続を確立する必要があります。 (後者は「RESTART」と書かれた分割線で示されます)。 ユーザープロセスがGUIプロセスへの接続に失敗すると、Tkエラーボックスが表示され、「接続できません」というメッセージが表示され、ユーザーにここを指示します。 その後、終了します。

失敗の一般的な原因は、 random.pytkinter.py など、標準ライブラリモジュールと同じ名前のユーザー作成ファイルです。 このようなファイルが、実行しようとしているファイルと同じディレクトリにある場合、IDLEはstdlibファイルをインポートできません。 現在の修正は、ユーザーファイルの名前を変更することです。

以前ほど一般的ではありませんが、ウイルス対策プログラムまたはファイアウォールプログラムが接続を停止する場合があります。 プログラムに接続を許可するように教えることができない場合は、IDLEを機能させるためにプログラムをオフにする必要があります。 外部ポートにデータが表示されないため、この内部接続を許可しても安全です。 同様の問題は、接続をブロックするネットワークの設定ミスです。

Pythonのインストールの問題により、IDLEが停止することがあります。複数のバージョンが衝突したり、1つのインストールで管理者アクセスが必要になる場合があります。 衝突を元に戻す場合、または管理者として実行できない、または実行したくない場合は、Pythonを完全に削除して最初からやり直すのが最も簡単な場合があります。

ゾンビpythonw.exeプロセスが問題になる可能性があります。 Windowsでは、タスクマネージャーを使用して1つを確認し、ある場合は停止します。 プログラムのクラッシュまたはキーボード割り込み(control-C)によって開始された再起動が接続に失敗する場合があります。 エラーボックスを閉じるか、[シェル]メニューの[シェルの再起動]を使用すると、一時的な問題が修正される場合があります。

IDLEが最初に起動すると、~/.idlerc/(〜は自分のホームディレクトリ)にあるユーザー構成ファイルを読み取ろうとします。 問題がある場合は、エラーメッセージが表示されます。 ランダムなディスクグリッチは別として、ファイルを手動で編集しないことでこれを防ぐことができます。 代わりに、[オプション]の下の構成ダイアログを使用してください。 ユーザー構成ファイルにエラーが発生したら、それを削除して設定ダイアログからやり直すのが最善の解決策です。

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


実行中のユーザーコード

まれな例外を除いて、IDLEを使用してPythonコードを実行した結果は、テキストモードのシステムコンソールまたはターミナルウィンドウでPythonを使用して直接、デフォルトの方法で同じコードを実行した場合と同じになることを目的としています。 ただし、インターフェイスと操作が異なると、表示される結果に影響する場合があります。 たとえば、sys.modulesはより多くのエントリで始まり、threading.activeCount()は1ではなく2を返します。

デフォルトでは、IDLEは、シェルとエディターを実行するユーザーインターフェイスプロセスではなく、別のOSプロセスでユーザーコードを実行します。 実行プロセスでは、sys.stdinsys.stdout、およびsys.stderrを、シェルウィンドウから入力を取得してシェルウィンドウに出力を送信するオブジェクトに置き換えます。 sys.__stdin__sys.__stdout__、およびsys.__stderr__に格納されている元の値は変更されませんが、Noneである可能性があります。

シェルにフォーカスがあると、キーボードと画面を制御します。 これは通常透過的ですが、キーボードと画面に直接アクセスする機能は機能しません。 これらには、キーが押されたかどうか、押された場合はどれかを決定するシステム固有の機能が含まれます。

IDLEの標準ストリーム置換は、ユーザーコードによって直接行われるか、マルチプロセッシングなどのモジュールによって行われるかにかかわらず、実行プロセスで作成されたサブプロセスには継承されません。 そのようなサブプロセスがsys.stdinまたはprintまたはwriteからsys.stdoutまたはsys.stderrへのinputを使用する場合、IDLEはコマンドラインウィンドウで開始する必要があります。 次に、セカンダリサブプロセスがそのウィンドウにアタッチされて入力と出力が行われます。

実行プロセスで実行されているIDLEコードは、他の方法では存在しないフレームをコールスタックに追加します。 IDLEは、sys.getrecursionlimitsys.setrecursionlimitをラップして、追加のスタックフレームの影響を減らします。

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

ユーザーコードが直接またはsys.exitを呼び出してSystemExitを起動すると、IDLEは終了する代わりにシェルプロンプトに戻ります。


シェルでのユーザー出力

プログラムがテキストを出力する場合、結果は対応する出力デバイスによって決定されます。 IDLEがユーザーコードを実行すると、sys.stdoutsys.stderrがIDLEのシェルの表示領域に接続されます。 その機能の一部は、基盤となるTkTextウィジェットから継承されています。 その他はプログラムされた追加です。 重要なのは、シェルは本番稼働ではなく開発用に設計されていることです。

たとえば、シェルが出力を破棄することはありません。 無制限の出力をシェルに送信するプログラムは、最終的にメモリをいっぱいにし、メモリエラーを引き起こします。 対照的に、一部のシステムテキストウィンドウは、出力の最後のn行のみを保持します。 たとえば、Windowsコンソールでは、ユーザーが設定可能な1〜9999行が保持され、デフォルトでは300行になります。

Tkテキストウィジェット、つまりIDLEのシェルは、UnicodeのBMP(基本多言語面)サブセットに文字(コードポイント)を表示します。 どの文字が適切なグリフで表示され、どの文字が置換ボックスで表示されるかは、オペレーティングシステムとインストールされているフォントによって異なります。 タブ文字を使用すると、次のタブが停止した後に次のテキストが開始されます。 (それらは8 '文字'ごとに発生します)。 改行文字を使用すると、次のテキストが新しい行に表示されます。 その他の制御文字は、オペレーティングシステムとフォントに応じて、無視されるか、スペース、ボックス、またはその他のものとして表示されます。 (矢印キーを使用してこのような出力でテキストカーソルを移動すると、驚くべき間隔の動作が見られる場合があります。)

>>> s = 'a\tb\a<\x02><\r>\bc\nd'  # Enter 22 chars.
>>> len(s)
14
>>> s  # Display repr(s)
'a\tb\x07<\x02><\r>\x08c\nd'
>>> print(s, end='')  # Display s as is.
# Result varies by OS and font.  Try it.

repr関数は、式の値のインタラクティブなエコーに使用されます。 入力文字列の変更されたバージョンを返します。このバージョンでは、制御コード、一部のBMPコードポイント、およびすべての非BMPコードポイントがエスケープコードに置き換えられています。 上で示したように、表示方法に関係なく、文字列内の文字を識別できます。

通常の出力とエラー出力は、通常、コード入力とは別の(別々の行に)保持されます。 それぞれ異なるハイライトカラーを取得します。

SyntaxErrorトレースバックの場合、エラーが検出された通常の「^」マークは、テキストにエラーハイライトで色を付けることで置き換えられます。 ファイルからコードを実行すると他の例外が発生する場合は、トレースバック行を右クリックして、IDLEエディターの対応する行にジャンプできます。 必要に応じてファイルが開かれます。

Shellには、出力行を「圧縮されたテキスト」ラベルに圧縮するための特別な機能があります。 これは、N行を超える出力に対して自動的に実行されます(デフォルトではN = 50)。 Nは、[設定]ダイアログの[一般]ページの[PyShell]セクションで変更できます。 出力を右クリックすると、行数の少ない出力を圧縮できます。 これは、スクロールを遅くするのに十分な長さの便利な行になる可能性があります。

ラベルをダブルクリックすると、スクイーズされた出力が所定の位置に展開されます。 ラベルを右クリックして、クリップボードまたは別のビューウィンドウに送信することもできます。


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

IDLEは、tkinterプログラムの開発を容易にするために、意図的に標準の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()と入力します。 繰り返しますが、root.update()に入るまで、標準のPythonでは目に見える変化はありません。

ほとんどのtkinterプログラムはroot.mainloop()を実行します。これは通常、tkアプリが破棄されるまで戻りません。 プログラムがpython -iまたはIDLEエディターから実行されている場合、>>>シェルプロンプトは、mainloop()が戻るまで表示されません。戻ると、操作するものは何も残りません。

IDLEエディターからtkinterプログラムを実行する場合、mainloop呼び出しをコメントアウトできます。 その後、すぐにシェルプロンプトが表示され、ライブアプリケーションと対話できます。 標準のPythonで実行する場合は、mainloop呼び出しを再度有効にすることを忘れないでください。


サブプロセスなしで実行

デフォルトでは、IDLEは、内部ループバックインターフェイスを使用するソケットを介して別のサブプロセスでユーザーコードを実行します。 この接続は外部からは見えず、インターネットとの間でデータが送受信されることはありません。 とにかくファイアウォールソフトウェアが文句を言うなら、あなたはそれを無視することができます。

ソケット接続の試行が失敗した場合、Idleは通知します。 このような障害は一時的なものである場合もありますが、永続的な場合は、ファイアウォールが接続をブロックしているか、特定のシステムの構成が間違っている可能性があります。 問題が修正されるまで、-nコマンドラインスイッチを使用してアイドルを実行できます。

IDLEが-nコマンドラインスイッチで開始された場合、IDLEは単一のプロセスで実行され、RPCPython実行サーバーを実行するサブプロセスは作成されません。 これは、Pythonがプラットフォーム上にサブプロセスまたはRPCソケットインターフェイスを作成できない場合に役立ちます。 ただし、このモードでは、ユーザーコードはIDLE自体から分離されません。 また、モジュールの実行/実行(F5)が選択されている場合、環境は再起動されません。 コードが変更されている場合は、影響を受けるモジュールをreload()して、特定のアイテムを再インポートする必要があります(例: 変更を有効にする場合は、foo import bazから)。 これらの理由から、可能な限りデフォルトのサブプロセスでIDLEを実行することをお勧めします。

バージョン3.4以降非推奨。


ヘルプと設定

ヘルプソース

ヘルプメニューエントリ「IDLEヘルプ」には、ライブラリリファレンスのIDLEの章のフォーマットされたhtmlバージョンが表示されます。 結果は、読み取り専用のtkinterテキストウィンドウで、Webブラウザに表示されるものに近くなります。 マウスホイール、スクロールバー、または上下の矢印キーを押したまま、テキスト内を移動します。 または、目次(目次)ボタンをクリックして、開いたボックスでセクションヘッダーを選択します。

ヘルプメニューエントリ「PythonDocs」は、docs.python.org/x.yで利用可能なチュートリアルを含む広範なヘルプソースを開きます。ここで、「x.y」は現在実行中のPythonバージョンです。 システムにドキュメントのオフラインコピーがある場合(これはインストールオプションである可能性があります)、代わりにそれが開かれます。

選択したURLは、[IDLEの構成]ダイアログの[全般]タブを使用して、いつでもヘルプメニューに追加またはヘルプメニューから削除できます。


プリファレンスの設定

フォント設定、強調表示、キー、および一般設定は、[オプション]メニューの[IDLEの構成]を使用して変更できます。 デフォルト以外のユーザー設定は、ユーザーのホームディレクトリの.idlercディレクトリに保存されます。 不正なユーザー構成ファイルによって引き起こされる問題は、.idlerc内の1つ以上のファイルを編集または削除することで解決されます。

[フォント]タブで、複数の言語の複数の文字に対するフォントの面とサイズの影響について、テキストサンプルを参照してください。 サンプルを編集して、個人的に興味のある他の文字を追加します。 サンプルを使用して、等幅フォントを選択します。 シェルまたはエディターで特定の文字に問題がある場合は、それらをサンプルの先頭に追加し、最初のサイズを変更してからフォントを変更してみてください。

[ハイライトとキー]タブで、組み込みまたはカスタムのカラーテーマとキーセットを選択します。 古いIDLEで新しい組み込みのカラーテーマまたはキーセットを使用するには、それを新しいカスタムテーマまたはキーセットとして保存すると、古いIDLEからアクセスできるようになります。


macOSでのアイドル

[システム環境設定:ドック]で、[ドキュメントを開くときにタブを優先する]を[常に]に設定できます。 この設定は、IDLEで使用されるtk / tkinter GUIフレームワークと互換性がなく、いくつかのIDLE機能を壊します。


拡張機能

IDLEには拡張機能が含まれています。 拡張機能の設定は、設定ダイアログの[拡張機能]タブで変更できます。 詳細については、idlelibディレクトリのconfig-extensions.defの先頭を参照してください。 現在のデフォルトの拡張子はzzdummyだけです。これは、テストにも使用される例です。