sys —システム固有のパラメーターと関数—Pythonドキュメント

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

sys —システム固有のパラメーターと機能


このモジュールは、インタプリタによって使用または維持されるいくつかの変数、およびインタプリタと強力に相互作用する関数へのアクセスを提供します。 いつでもご利用いただけます。

sys.abiflags

Pythonが標準のconfigureスクリプトで構築されたPOSIXシステムでは、これには PEP 3149 で指定されたABIフラグが含まれます。

バージョン3.8で変更:デフォルトのフラグが空の文字列になりました(pymallocのmフラグが削除されました)。

バージョン3.2の新機能。

sys.addaudithook(hook)

呼び出し可能な hook を、現在の(サブ)インタープリターのアクティブな監査フックのリストに追加します。

sys.audit()関数を使用して監査イベントが発生すると、各フックは、イベント名と引数のタプルで追加された順序で呼び出されます。 PySys_AddAuditHook()によって追加されたネイティブフックが最初に呼び出され、次に現在の(サブ)インタープリターに追加されたフックが続きます。 その後、フックはイベントをログに記録したり、例外を発生させて操作を中止したり、プロセスを完全に終了したりできます。

CPythonによって発生するすべてのイベントについては監査イベントテーブルを、元の設計の説明については PEP 578 を参照してください。

バージョン3.8の新機能。

バージョン3.8.1で変更: Exception から派生したが、 RuntimeError から派生した例外は抑制されなくなりました。

sys.argv

Pythonスクリプトに渡されるコマンドライン引数のリスト。 argv[0]はスクリプト名です(これがフルパス名であるかどうかはオペレーティングシステムによって異なります)。 インタプリタの -c コマンドラインオプションを使用してコマンドを実行した場合、argv[0]は文字列'-c'に設定されます。 スクリプト名がPythonインタープリターに渡されなかった場合、argv[0]は空の文字列です。

標準入力、またはコマンドラインで指定されたファイルのリストをループするには、 fileinput モジュールを参照してください。

ノート

Unixでは、コマンドライン引数はOSからバイト単位で渡されます。 Pythonは、ファイルシステムエンコーディングと「surrogateescape」エラーハンドラーを使用してそれらをデコードします。 元のバイトが必要な場合は、[os.fsencode(arg) for arg in sys.argv]で取得できます。

sys.audit(event, *args)

監査イベントを発生させ、アクティブな監査フックをトリガーします。 event はイベントを識別する文字列であり、 args には、イベントに関する詳細情報を含むオプションの引数を含めることができます。 特定のイベントの引数の数とタイプは、パブリックで安定したAPIと見なされるため、リリース間で変更しないでください。

たとえば、1つの監査イベントの名前はos.chdirです。 このイベントには、要求された新しい作業ディレクトリを含む path という引数が1つあります。

sys.audit()は、既存の監査フックを呼び出して、イベント名と引数を渡し、任意のフックから最初の例外を再発生させます。 一般に、例外が発生した場合は、それを処理せず、プロセスをできるだけ早く終了する必要があります。 これにより、フックの実装は特定のイベントに応答する方法を決定できます。フックの実装は、単にイベントをログに記録するか、例外を発生させることで操作を中止できます。

フックは、 sys.addaudithook()または PySys_AddAuditHook()関数を使用して追加されます。

この関数のネイティブの同等物は PySys_Audit()です。 可能な場合は、ネイティブ関数を使用することをお勧めします。

CPythonによって発生するすべてのイベントについては、監査イベントテーブルを参照してください。

バージョン3.8の新機能。

sys.base_exec_prefix

Pythonの起動中、site.pyが実行される前に、 exec_prefix と同じ値に設定されます。 仮想環境で実行されていない場合、値は同じままです。 site.pyが仮想環境が使用中であることを検出した場合、 prefix および exec_prefix の値は仮想環境を指すように変更されますが、 base_prefix [ X269X]および base_exec_prefix は、ベースのPythonインストール(仮想環境の作成元)をポイントしたままになります。

バージョン3.3の新機能。

sys.base_prefix

Pythonの起動中、site.pyが実行される前に、 prefix と同じ値に設定されます。 仮想環境で実行されていない場合、値は同じままです。 site.pyが仮想環境が使用中であることを検出した場合、 prefix および exec_prefix の値は仮想環境を指すように変更されますが、 base_prefix [ X269X]および base_exec_prefix は、ベースのPythonインストール(仮想環境の作成元)をポイントしたままになります。

バージョン3.3の新機能。

sys.byteorder
ネイティブバイトオーダーのインジケータ。 これは、ビッグエンディアン(最上位バイトファースト)プラットフォームでは'big'の値になり、リトルエンディアン(最下位バイトファースト)プラットフォームでは'little'になります。
sys.builtin_module_names
このPythonインタープリターにコンパイルされるすべてのモジュールの名前を示す文字列のタプル。 (この情報は他の方法では利用できません— modules.keys()はインポートされたモジュールのみをリストします。)
sys.call_tracing(func, args)
トレースを有効にした状態で、func(*args)を呼び出します。 トレース状態が保存され、後で復元されます。 これは、他のコードを再帰的にデバッグするために、チェックポイントからデバッガーから呼び出されることを目的としています。
sys.copyright
Pythonインタープリターに関連する著作権を含む文字列。
sys._clear_type_cache()

内部タイプキャッシュをクリアします。 タイプキャッシュは、属性とメソッドのルックアップを高速化するために使用されます。 参照リークのデバッグ中に不要な参照を削除するには、関数のみを使用します。

この機能は、内部および特殊な目的でのみ使用する必要があります。

sys._current_frames()

関数が呼び出されたときにそのスレッドで現在アクティブな最上位のスタックフレームに各スレッドの識別子をマッピングするディクショナリを返します。 traceback モジュールの関数は、そのようなフレームが与えられた場合にコールスタックを構築できることに注意してください。

これは、デッドロックのデバッグに最も役立ちます。この関数は、デッドロックされたスレッドの協力を必要とせず、そのようなスレッドの呼び出しスタックは、デッドロックされたままである限り凍結されます。 デッドロックされていないスレッドに対して返されるフレームは、呼び出し元のコードがフレームを調べるまでに、そのスレッドの現在のアクティビティとは関係がない場合があります。

この機能は、内部および特殊な目的でのみ使用する必要があります。

sys.breakpointhook()

このフック関数は、組み込みの breakpoint()によって呼び出されます。 デフォルトでは、 pdb デバッガーに移動しますが、他の関数に設定して、使用するデバッガーを選択できます。

この関数のシグニチャは、それが呼び出すものによって異なります。 たとえば、デフォルトのバインディング(たとえば pdb.set_trace())は引数を期待していませんが、追加の引数(位置および/またはキーワード)を期待する関数にバインドすることができます。 組み込みのbreakpoint()関数は、その*args**kwsを直接通過させます。 breakpointhooks()が返すものはすべて、breakpoint()から返されます。

デフォルトの実装では、最初に環境変数 PYTHONBREAKPOINT を調べます。 これが"0"に設定されている場合、この関数はすぐに戻ります。 NS それはノーオペレーションです。 環境変数が設定されていない場合、または空の文字列に設定されている場合は、pdb.set_trace()が呼び出されます。 それ以外の場合、この変数は、Pythonのドット付きインポートの命名法を使用して、実行する関数に名前を付ける必要があります。 package.subpackage.module.function。 この場合、package.subpackage.moduleがインポートされ、結果のモジュールにはfunction()という名前の呼び出し可能オブジェクトが含まれている必要があります。 これが実行され、*args**kwsが渡され、function()が返すものは何でも、sys.breakpointhook()は組み込みの breakpoint()に戻ります。 ] 関数。

PYTHONBREAKPOINT で指定された呼び出し可能オブジェクトのインポート中に問題が発生した場合、 RuntimeWarning が報告され、ブレークポイントは無視されることに注意してください。

また、sys.breakpointhook()がプログラムでオーバーライドされた場合、 PYTHONBREAKPOINT参照されません

バージョン3.7の新機能。

sys._debugmallocstats()

CPythonのメモリアロケータの状態に関する低レベルの情報をstderrに出力します。

Pythonが–with-pydebugで構成されている場合、Pythonはいくつかの高価な内部整合性チェックも実行します。

バージョン3.3の新機能。

sys.dllhandle
PythonDLLのハンドルを指定する整数。
sys.displayhook(value)

valueNoneでない場合、この関数はrepr(value)sys.stdoutに出力し、 valuebuiltins._に保存します。 。 repr(value)sys.stdout.errorsエラーハンドラー(おそらく'strict')でsys.stdout.encodingにエンコードできない場合は、'backslashreplace'エラーハンドラ。

sys.displayhookは、インタラクティブなPythonセッションで入力されたを評価した結果で呼び出されます。 これらの値の表示は、sys.displayhookに別の1つの引数関数を割り当てることでカスタマイズできます。

擬似コード:

def displayhook(value):
    if value is None:
        return
    # Set '_' to None to avoid recursion
    builtins._ = None
    text = repr(value)
    try:
        sys.stdout.write(text)
    except UnicodeEncodeError:
        bytes = text.encode(sys.stdout.encoding, 'backslashreplace')
        if hasattr(sys.stdout, 'buffer'):
            sys.stdout.buffer.write(bytes)
        else:
            text = bytes.decode(sys.stdout.encoding, 'strict')
            sys.stdout.write(text)
    sys.stdout.write("\n")
    builtins._ = value

バージョン3.2で変更: UnicodeEncodeError'backslashreplace'エラーハンドラーを使用します。

sys.dont_write_bytecode
これが当てはまる場合、Pythonはソースモジュールのインポート時に.pycファイルを書き込もうとしません。 この値は、 -B コマンドラインオプションと PYTHONDONTWRITEBYTECODE 環境変数に応じて、最初はTrueまたはFalseに設定されます。 、ただし、バイトコードファイルの生成を制御するように自分で設定できます。
sys.pycache_prefix

これが設定されている場合(Noneではない)、Pythonはバイトコードキャッシュ.pycファイルを [からではなく、このディレクトリをルートとする並列ディレクトリツリーに書き込みます(そしてそれらを読み取ります)。 X178X]ソースコードツリーのディレクトリ。 ソースコードツリー内の__pycache__ディレクトリはすべて無視され、新しい .pyc ファイルがpycacheプレフィックス内に書き込まれます。 したがって、ビルド前の手順として compileall を使用する場合は、実行時に使用するのと同じpycacheプレフィックス(存在する場合)を使用して実行する必要があります。

相対パスは、現在の作業ディレクトリを基準にして解釈されます。

この値は、 -X pycache_prefix=PATHコマンドラインオプションまたは PYTHONPYCACHEPREFIX 環境変数(コマンドライン)の値に基づいて最初に設定されます。優先されます)。 どちらも設定されていない場合はNoneです。

バージョン3.8の新機能。

sys.excepthook(type, value, traceback)

この関数は、指定されたトレースバックと例外をsys.stderrに出力します。

例外が発生してキャッチされない場合、インタープリターは3つの引数、例外クラス、例外インスタンス、およびトレースバックオブジェクトを使用してsys.excepthookを呼び出します。 インタラクティブセッションでは、これは制御がプロンプトに戻る直前に発生します。 Pythonプログラムでは、これはプログラムが終了する直前に発生します。 このようなトップレベルの例外の処理は、sys.excepthookに別の3つの引数関数を割り当てることでカスタマイズできます。

も参照してください

sys.unraisablehook()関数は発生しない例外を処理し、 threading.excepthook()関数は threading.Thread.run()によって発生した例外を処理します。

sys.__breakpointhook__
sys.__displayhook__
sys.__excepthook__
sys.__unraisablehook__

これらのオブジェクトには、プログラムの開始時にbreakpointhookdisplayhookexcepthook、およびunraisablehookの元の値が含まれています。 breakpointhookdisplayhookexcepthookunraisablehookが壊れたオブジェクトや代替オブジェクトに置き換えられた場合に復元できるように、これらは保存されます。

バージョン3.7の新機能: __ breakpointhook__

バージョン3.8の新機能: __ unraisablehook__

sys.exc_info()

この関数は、現在処理されている例外に関する情報を提供する3つの値のタプルを返します。 返される情報は、現在のスレッドと現在のスタックフレームの両方に固有です。 現在のスタックフレームが例外を処理していない場合、情報は、例外を処理しているスタックフレームが見つかるまで、呼び出し元のスタックフレームまたはその呼び出し元から取得されます。 ここで、「例外の処理」とは、「例外句の実行」と定義されています。 どのスタックフレームでも、現在処理されている例外に関する情報にのみアクセスできます。

スタックのどこでも例外が処理されていない場合、3つのNone値を含むタプルが返されます。 それ以外の場合、返される値は(type, value, traceback)です。 それらの意味は次のとおりです。 type は、処理されている例外のタイプ( BaseException のサブクラス)を取得します。 value は、例外インスタンス(例外タイプのインスタンス)を取得します。 traceback は、 tracebackオブジェクトを取得します。これは、例外が最初に発生したポイントでコールスタックをカプセル化します。

sys.exec_prefix

プラットフォームに依存するPythonファイルがインストールされるサイト固有のディレクトリプレフィックスを示す文字列。 デフォルトでは、これも'/usr/local'です。 これは、ビルド時に configure スクリプトの--exec-prefix引数を使用して設定できます。 具体的には、すべての構成ファイル(例: pyconfig.hヘッダーファイル)はディレクトリexec_prefix/lib/pythonX.Y/configにインストールされ、共有ライブラリモジュールはexec_prefix/lib/pythonX.Y/lib-dynloadにインストールされます。ここで、 XY はPythonのバージョン番号です。 、たとえば3.2

ノート

仮想環境が有効な場合、この値はsite.pyで変更され、仮想環境を指します。 Pythonインストールの値は、 base_exec_prefix を介して引き続き利用できます。

sys.executable
これが理にかなっているシステムで、Pythonインタープリターの実行可能バイナリーの絶対パスを示す文字列。 Pythonが実行可能ファイルへの実際のパスを取得できない場合、 sys.executable は空の文字列またはNoneになります。
sys.exit([arg])

Pythonを終了します。 これは、 SystemExit 例外を発生させることによって実装されるため、 try ステートメントのfinally節で指定されたクリーンアップアクションが尊重され、外部レベルでの終了試行をインターセプトすることができます。

オプションの引数 arg は、終了ステータス(デフォルトはゼロ)を与える整数、または別のタイプのオブジェクトにすることができます。 整数の場合、ゼロは「正常終了」と見なされ、ゼロ以外の値はシェルなどによって「異常終了」と見なされます。 ほとんどのシステムでは、0〜127の範囲である必要があり、そうでない場合は未定義の結果が生成されます。 一部のシステムには、特定の終了コードに特定の意味を割り当てるための規則がありますが、これらは一般に開発が進んでいません。 Unixプログラムは通常、コマンドライン構文エラーに2を使用し、その他すべての種類のエラーに1を使用します。 別のタイプのオブジェクトが渡された場合、Noneはゼロを渡すことと同等であり、他のオブジェクトは stderr に出力され、終了コードは1になります。 特に、sys.exit("some error message")は、エラーが発生したときにプログラムを終了する簡単な方法です。

exit()は最終的に「のみ」例外を発生させるため、メインスレッドから呼び出された場合にのみプロセスを終了し、例外はインターセプトされません。

バージョン3.6で変更: Pythonインタープリターが SystemExit をキャッチした後、クリーンアップでエラーが発生した場合(標準ストリームのバッファーデータのフラッシュエラーなど)、終了ステータスが変更されます120まで。

sys.flags

名前付きタプル フラグは、コマンドラインフラグのステータスを公開します。 属性は読み取り専用です。

属性

国旗

debug

-d

inspect

-i

interactive

-i

isolated

-I

optimize

-O または -OO

dont_write_bytecode

-B

no_user_site

-s

no_site

-S

ignore_environment

-E

verbose

-v

bytes_warning

-b

quiet

-q

hash_randomization

-R

dev_mode

-X devPython開発モード

utf8_mode

-X utf8

バージョン3.2で変更:新しい -q フラグにquiet属性を追加しました。

バージョン3.2.3の新機能: hash_randomization属性。

バージョン3.3で変更:廃止されたdivision_warning属性を削除しました。

バージョン3.4で変更: -I isolatedフラグにisolated属性を追加しました。

バージョン3.7で変更:新しい Python開発モードdev_mode属性と、新しい -X [のutf8_mode属性を追加しました。 X155X] utf8フラグ。

sys.float_info

フロートタイプに関する情報を保持する名前付きタプル。 精度と内部表現に関する低レベルの情報が含まれています。 値は、「C」プログラミング言語の標準ヘッダーファイルfloat.hで定義されているさまざまな浮動小数点定数に対応しています。 詳細については、1999 ISO / IECC規格 [C99] のセクション5.2.4.2.2「フローティングタイプの特性」を参照してください。

属性

float.hマクロ

説明

epsilon

DBL_EPSILON

1.0と、浮動小数点として表現できる1.0より大きい最小値との差

math.ulp()も参照してください。

dig

DBL_DIG

浮動小数点で忠実に表現できる小数点以下の最大桁数。 下記参照

mant_dig

DBL_MANT_DIG

浮動小数点精度:浮動小数点の仮数の基数-radix桁の数

max

DBL_MAX

表現可能な最大の正の有限フロート

max_exp

DBL_MAX_EXP

radix**(e-1)が表現可能な有限浮動小数点数であるような最大整数 e

max_10_exp

DBL_MAX_10_EXP

10**eが表現可能な有限浮動小数点数の範囲内にあるような最大整数 e

min

DBL_MIN

表現可能な最小の正の正規化フロート

math.ulp(0.0)を使用して、最小の正の非正規化表現可能なフロートを取得します。

min_exp

DBL_MIN_EXP

radix**(e-1)が正規化されたfloatであるような最小整数 e

min_10_exp

DBL_MIN_10_EXP

10**eが正規化されたfloatであるような最小整数 e

radix

FLT_RADIX

指数表現の基数

rounds

FLT_ROUNDS

算術演算に使用される丸めモードを表す整数定数。 これは、インタプリタの起動時のシステムFLT_ROUNDSマクロの値を反映しています。 可能な値とその意味の説明については、C99標準のセクション5.2.4.2.2を参照してください。

属性sys.float_info.digにはさらに説明が必要です。 sが、最大でsys.float_info.digの有効数字を含む10進数を表す文字列である場合、sをfloatに変換してから再度変換すると、同じ10進数値を表す文字列が復元されます。

>>> import sys
>>> sys.float_info.dig
15
>>> s = '3.14159265358979'    # decimal string with 15 significant digits
>>> format(float(s), '.15g')  # convert to float and back -> same value
'3.14159265358979'

ただし、有効数字がsys.float_info.digを超える文字列の場合、これが常に当てはまるとは限りません。

>>> s = '9876543211234567'    # 16 significant digits is too many!
>>> format(float(s), '.16g')  # conversion changes value
'9876543211234568'
sys.float_repr_style

repr()関数がfloatに対してどのように動作するかを示す文字列。 文字列の値が'short'の場合、有限フロートxの場合、repr(x)は、float(repr(x)) == xというプロパティを持つ短い文字列を生成することを目的としています。 これは、Python3.1以降の通常の動作です。 それ以外の場合、float_repr_styleの値は'legacy'であり、repr(x)は3.1より前のバージョンのPythonと同じように動作します。

バージョン3.1の新機能。

sys.getallocatedblocks()

サイズに関係なく、インタプリタによって現在割り当てられているメモリブロックの数を返します。 この関数は、主にメモリリークの追跡とデバッグに役立ちます。 インタプリタの内部キャッシュのため、結果は呼び出しごとに異なる可能性があります。 より予測可能な結果を得るには、 _clear_type_cache()および gc.collect()を呼び出す必要がある場合があります。

Pythonのビルドまたは実装がこの情報を合理的に計算できない場合、 getallocatedblocks()は代わりに0を返すことができます。

バージョン3.4の新機能。

sys.getandroidapilevel()

Androidのビルド時APIバージョンを整数として返します。

バージョン3.7の新機能。

sys.getdefaultencoding()
Unicode実装で使用されている現在のデフォルトの文字列エンコーディングの名前を返します。
sys.getdlopenflags()
dlopen()呼び出しに使用されるフラグの現在の値を返します。 フラグ値の記号名は、 os モジュール(RTLD_xxx定数、例: os.RTLD_LAZY )。
sys.getfilesystemencoding()

Unicodeファイル名とバイトファイル名の間の変換に使用されるエンコーディングの名前を返します。 最高の互換性を得るには、ファイル名をバイトとして表すこともサポートされていますが、すべての場合にファイル名にstrを使用する必要があります。 ファイル名を受け入れるまたは返す関数は、strまたはbytesのいずれかをサポートし、システムの優先表現に内部的に変換する必要があります。

このエンコーディングは常にASCII互換です。

os.fsencode()および os.fsdecode()を使用して、正しいエンコードおよびエラーモードが使用されるようにする必要があります。

  • UTF-8モードでは、エンコードはどのプラットフォームでもutf-8です。

  • macOSでは、エンコーディングは'utf-8'です。

  • Unixでは、エンコーディングはロケールエンコーディングです。

  • Windowsでは、ユーザー構成に応じて、エンコードは'utf-8'または'mbcs'になります。

  • Androidでは、エンコーディングは'utf-8'です。

  • VxWorksでは、エンコーディングは'utf-8'です。

バージョン3.2で変更: getfilesystemencoding()の結果をNoneにすることはできなくなりました。

バージョン3.6での変更: Windowsが'mbcs'を返すことは保証されなくなりました。 詳細については、 PEP 529 および _enablelegacywindowsfsencoding()を参照してください。

バージョン3.7で変更: UTF-8モードで「utf-8」を返します。

sys.getfilesystemencodeerrors()

Unicodeファイル名とバイトファイル名の間の変換に使用されるエラーモードの名前を返します。 エンコーディング名は getfilesystemencoding()から返されます。

os.fsencode()および os.fsdecode()を使用して、正しいエンコードおよびエラーモードが使用されるようにする必要があります。

バージョン3.6の新機能。

sys.getrefcount(object)
オブジェクトの参照カウントを返します。 getrefcount()への引数として(一時的な)参照が含まれているため、返されるカウントは通常、予想よりも1つ多くなります。
sys.getrecursionlimit()
再帰制限の現在の値、Pythonインタープリタースタックの最大深度を返します。 この制限により、無限再帰がCスタックのオーバーフローを引き起こしてPythonをクラッシュさせるのを防ぎます。 setrecursionlimit()で設定できます。
sys.getsizeof(object[, default])

オブジェクトのサイズをバイト単位で返します。 オブジェクトは、任意のタイプのオブジェクトにすることができます。 すべての組み込みオブジェクトは正しい結果を返しますが、これは実装固有であるため、サードパーティの拡張機能に当てはまる必要はありません。

オブジェクトに直接起因するメモリ消費のみが考慮され、参照するオブジェクトのメモリ消費は考慮されません。

指定した場合、オブジェクトがサイズを取得する手段を提供しない場合、 default が返されます。 そうしないと、 TypeError が発生します。

getsizeof()は、オブジェクトの__sizeof__メソッドを呼び出し、オブジェクトがガベージコレクターによって管理されている場合は、ガベージコレクターのオーバーヘッドを追加します。

getsizeof()を再帰的に使用してコンテナーのサイズとそのすべての内容を見つける例については、 recursivesizeofレシピを参照してください。

sys.getswitchinterval()

インタプリタの「スレッド切り替え間隔」を返します。 setswitchinterval()を参照してください。

バージョン3.2の新機能。

sys._getframe([depth])
呼び出しスタックからフレームオブジェクトを返します。 オプションの整数 depth が指定されている場合、スタックの最上位より下で多くの呼び出しが行われるフレームオブジェクトを返します。 それがコールスタックよりも深い場合、 ValueError が発生します。 depth のデフォルトはゼロで、呼び出しスタックの最上位にフレームを返します。
sys.getprofile()
setprofile()で設定されたプロファイラー関数を取得します。
sys.gettrace()
settrace()で設定されたトレース関数を取得します。
sys.getwindowsversion()

現在実行中のWindowsバージョンを説明する名前付きタプルを返します。 名前付き要素は、 majorminorbuildplatformservice_packservice_pack_minor です。 ]、 service_pack_majorsuite_maskproduct_typeplatform_versionservice_pack には文字列が含まれ、 platform_version には3タプルが含まれ、その他の値はすべて整数です。 コンポーネントには名前でアクセスすることもできるため、sys.getwindowsversion()[0]sys.getwindowsversion().majorと同等です。 以前のバージョンとの互換性のために、最初の5つの要素のみがインデックスによって取得できます。

プラットフォーム2 (VER_PLATFORM_WIN32_NT)になります。

product_type は、次のいずれかの値になります。

絶え間ない

意味

1 (VER_NT_WORKSTATION)

システムはワークステーションです。

2 (VER_NT_DOMAIN_CONTROLLER)

システムはドメインコントローラーです。

3 (VER_NT_SERVER)

システムはサーバーですが、ドメインコントローラーではありません。

この関数は、Win32 GetVersionEx()関数をラップします。 これらのフィールドの詳細については、OSVERSIONINFOEX()に関するMicrosoftのドキュメントを参照してください。

platform_version は、プロセス用にエミュレートされているバージョンではなく、現在のオペレーティングシステムのメジャーバージョン、マイナーバージョン、およびビルド番号を返します。 これは、機能の検出ではなく、ロギングでの使用を目的としています。

ノート

platform_version は、カーネル32.dllからバージョンを派生させます。これは、OSバージョンとは異なるバージョンである可能性があります。 正確なOSバージョンを実現するには、プラットフォームモジュールを使用してください。

バージョン3.2で変更:名前付きタプルに変更され、 service_pack_minorservice_pack_majorsuite_mask 、および product_type が追加されました。

バージョン3.6で変更: platform_version を追加

sys.get_asyncgen_hooks()

asyncgen_hooks オブジェクトを返します。これは、(firstiter、finalizer)の形式の namedtuple に似ています。ここで、 firstiter およびファイナライザーは、Noneまたは非同期ジェネレーターイテレーターを引数として取る関数であることが期待され、イベントループによる非同期ジェネレーターのファイナライズをスケジュールするために使用されます。

バージョン3.6の新機能:詳細については、 PEP 525 を参照してください。

ノート

この機能は暫定的に追加されました(詳細は PEP 411 を参照してください)。

sys.get_coroutine_origin_tracking_depth()

set_coroutine_origin_tracking_depth()で設定されている、現在のコルーチン原点追跡深度を取得します。

バージョン3.7の新機能。

ノート

この機能は暫定的に追加されました(詳細は PEP 411 を参照)。デバッグ目的でのみ使用してください。

sys.hash_info

数値ハッシュ実装のパラメーターを与える名前付きタプル。 数値型のハッシュの詳細については、数値型のハッシュを参照してください。

属性

説明

width

ハッシュ値に使用されるビット幅

modulus

数値ハッシュスキームに使用される素数モジュラスP

inf

正の無限大に対して返されたハッシュ値

nan

nanに返されるハッシュ値

imag

複素数の虚数部に使用される乗数

algorithm

str、bytes、memoryviewをハッシュするためのアルゴリズムの名前

hash_bits

ハッシュアルゴリズムの内部出力サイズ

seed_bits

ハッシュアルゴリズムのシードキーのサイズ

バージョン3.2の新機能。

バージョン3.4で変更: アルゴリズムhash_bitsseed_bits を追加

sys.hexversion

単一の整数としてエンコードされたバージョン番号。 これは、非実稼働リリースの適切なサポートを含め、バージョンごとに増加することが保証されています。 たとえば、Pythonインタープリターが少なくともバージョン1.5.2であることをテストするには、次を使用します。

if sys.hexversion >= 0x010502F0:
    # use some advanced feature
    ...
else:
    # use an alternative implementation or warn the user
    ...

これは、組み込みの hex()関数に渡した結果として表示されたときにのみ実際に意味があるように見えるため、hexversionと呼ばれます。 名前付きタプル sys.version_info は、同じ情報をより人間にわかりやすくエンコードするために使用できます。

hexversionの詳細については、 APIおよびABIバージョン管理を参照してください。

sys.implementation

現在実行中のPythonインタープリターの実装に関する情報を含むオブジェクト。 次の属性は、すべてのPython実装に存在する必要があります。

name は、実装の識別子です。例: 'cpython'。 実際の文字列はPython実装によって定義されますが、小文字であることが保証されています。

version は、 sys.version_info と同じ形式の名前付きタプルです。 これは、Python 実装のバージョンを表します。 これは、現在実行中のインタープリターが準拠しているPython language の特定のバージョン(sys.version_infoが表す)とは異なる意味を持っています。 たとえば、PyPy 1.8の場合、sys.implementation.versionsys.version_info(1, 8, 0, 'final', 0)になりますが、sys.version_infosys.version_info(2, 7, 2, 'final', 0)になります。 CPythonの場合、リファレンス実装であるため、これらは同じ値です。

hexversion は、 sys.hexversion のように、16進形式の実装バージョンです。

cache_tag は、キャッシュされたモジュールのファイル名でインポート機構によって使用されるタグです。 慣例により、'cpython-33'のように、実装の名前とバージョンを組み合わせたものになります。 ただし、Python実装では、必要に応じて他の値を使用する場合があります。 cache_tagNoneに設定されている場合は、モジュールのキャッシュを無効にする必要があることを示しています。

sys.implementation には、Python実装に固有の追加の属性が含まれる場合があります。 これらの非標準属性はアンダースコアで始まる必要があり、ここでは説明しません。 その内容に関係なく、 sys.implementation は、インタープリターの実行中、または実装バージョン間で変更されません。 (ただし、Python言語のバージョン間で変更される可能性があります。)詳細については、 PEP 421 を参照してください。

バージョン3.3の新機能。

ノート

新しい必須属性の追加は、通常のPEPプロセスを経る必要があります。 詳細については、 PEP 421 を参照してください。

sys.int_info

Pythonの整数の内部表現に関する情報を保持する名前付きタプル。 属性は読み取り専用です。

属性

説明

bits_per_digit

各桁に保持されているビット数。 Python整数は、ベース2**int_info.bits_per_digitに内部的に格納されます。

sizeof_digit

数字を表すために使用されるCタイプのバイト単位のサイズ

バージョン3.1の新機能。

sys.__interactivehook__

この属性が存在する場合、インタプリタが対話モードで起動されると、その値が自動的に呼び出されます(引数なし)。 これは、 PYTHONSTARTUP ファイルが読み取られた後に実行されるため、このフックをそこに設定できます。 サイトモジュールはこれを設定します

バージョン3.4の新機能。

sys.intern(string)

「インターン」文字列のテーブルに string と入力し、インターン文字列( string 自体またはコピー)を返します。 文字列のインターンは、ディクショナリルックアップのパフォーマンスを少し向上させるのに役立ちます。ディクショナリ内のキーがインターンされ、ルックアップキーがインターンされている場合、キー比較(ハッシュ後)は、文字列比較の代わりにポインタ比較によって実行できます。 通常、Pythonプログラムで使用される名前は自動的にインターンされ、モジュール、クラス、またはインスタンスの属性を保持するために使用されるディクショナリにはインターンされたキーがあります。

インターンされた文字列は不滅ではありません。 intern()の戻り値への参照を保持して、その恩恵を受ける必要があります。

sys.is_finalizing()

Pythonインタープリターがシャットダウンの場合は True を返し、それ以外の場合は False を返します。

バージョン3.5の新機能。

sys.last_type
sys.last_value
sys.last_traceback

これらの3つの変数は常に定義されているわけではありません。 これらは、例外が処理されず、インタープリターがエラーメッセージとスタックトレースバックを出力するときに設定されます。 それらの使用目的は、対話型ユーザーがデバッガーモジュールをインポートし、エラーの原因となったコマンドを再実行することなく、事後デバッグを実行できるようにすることです。 (通常、事後デバッガーに入るにはimport pdb; pdb.pm()を使用します。詳細については、 pdb モジュールを参照してください。)

変数の意味は、上記の exc_info()からの戻り値の意味と同じです。

sys.maxsize
タイプPy_ssize_tの変数が取ることができる最大値を与える整数。 通常、32ビットプラットフォームでは2**31 - 1、64ビットプラットフォームでは2**63 - 1です。
sys.maxunicode

最大のUnicodeコードポイントの値を与える整数。 1114111(16進数の0x10FFFF)。

バージョン3.3で変更: PEP 393 より前は、sys.maxunicode0xFFFFまたは0x10FFFFのいずれかでした。 、Unicode文字をUCS-2またはUCS-4のどちらとして保存するかを指定した構成オプションによって異なります。

sys.meta_path

find_spec()メソッドが呼び出されたメタパスファインダーオブジェクトのリスト。オブジェクトの1つがインポートするモジュールを見つけることができるかどうかを確認します。 find_spec()メソッドは、少なくともインポートされるモジュールの絶対名を使用して呼び出されます。 インポートするモジュールがパッケージに含まれている場合、親パッケージの __ path __ 属性が2番目の引数として渡されます。 このメソッドは、モジュール仕様を返します。モジュールが見つからない場合は、Noneを返します。

も参照してください

importlib.abc.MetaPathFinder

meta_path 上のファインダーオブジェクトのインターフェースを定義する抽象基本クラス。

importlib.machinery.ModuleSpec

find_spec()がインスタンスを返す必要がある具象クラス。


バージョン3.4での変更: モジュール仕様はPython3.4で PEP 451 によって導入されました。 以前のバージョンのPythonは、 find_module()というメソッドを探していました。 meta_path エントリに find_spec()メソッドがない場合、これはフォールバックと呼ばれます。

sys.modules
これは、モジュール名をすでにロードされているモジュールにマップする辞書です。 これを操作して、モジュールのリロードやその他のトリックを強制することができます。 ただし、辞書の置き換えは必ずしも期待どおりに機能するとは限らず、辞書から重要な項目を削除するとPythonが失敗する可能性があります。
sys.path

モジュールの検索パスを指定する文字列のリスト。 環境変数 PYTHONPATH から初期化され、さらにインストールに依存するデフォルト。

プログラムの起動時に初期化されると、このリストの最初の項目path[0]は、Pythonインタープリターを呼び出すために使用されたスクリプトを含むディレクトリです。 スクリプトディレクトリが利用できない場合(例: インタプリタがインタラクティブに呼び出される場合、またはスクリプトが標準入力から読み取られる場合)、path[0]は空の文字列であり、Pythonに現在のディレクトリ内のモジュールを最初に検索するように指示します。 PYTHONPATH の結果として挿入されたエントリの前に、スクリプトディレクトリが挿入されていることに注意してください。

プログラムは、独自の目的でこのリストを自由に変更できます。 文字列とバイトのみを sys.path に追加する必要があります。 他のすべてのデータ型は、インポート中に無視されます。

も参照してください

モジュール site これは、.pthファイルを使用して sys.path を拡張する方法を説明しています。

sys.path_hooks

パス引数を取り、パスのファインダーを作成しようとする呼び出し可能オブジェクトのリスト。 ファインダーを作成できる場合は、呼び出し可能オブジェクトによって返されます。それ以外の場合は、 ImportError を発生させます。

当初は PEP 302 で指定されていました。

sys.path_importer_cache

ファインダーオブジェクトのキャッシュとして機能する辞書。 キーは sys.path_hooks に渡されたパスであり、値は検出されたファインダーです。 パスが有効なファイルシステムパスであるが、 sys.path_hooks にファインダーが見つからない場合、Noneが保存されます。

当初は PEP 302 で指定されていました。

バージョン3.3で変更:ファインダーが見つからない場合、 imp.NullImporter の代わりに Noneが保存されます。

sys.platform

この文字列には、たとえば、プラットフォーム固有のコンポーネントを sys.path に追加するために使用できるプラットフォーム識別子が含まれています。

LinuxおよびAIXを除くUnixシステムの場合、これはuname -sによって返される小文字のOS名であり、uname -rによって返されるバージョンの最初の部分が追加されます。 'sunos5'または'freebsd8'Pythonが構築されたとき。 したがって、特定のシステムバージョンをテストする場合を除いて、次のイディオムを使用することをお勧めします。

if sys.platform.startswith('freebsd'):
    # FreeBSD-specific code here...
elif sys.platform.startswith('linux'):
    # Linux-specific code here...
elif sys.platform.startswith('aix'):
    # AIX-specific code here...

他のシステムの場合、値は次のとおりです。

システム

platform

AIX

'aix'

Linux

'linux'

ウィンドウズ

'win32'

Windows / Cygwin

'cygwin'

マックOS

'darwin'

バージョン3.3で変更: Linuxでは、 sys.platform にメジャーバージョンが含まれなくなりました。 'linux2''linux3'ではなく、常に'linux'です。 古いPythonバージョンにはバージョン番号が含まれているため、上記のstartswithイディオムを常に使用することをお勧めします。

バージョン3.8で変更: AIXでは、 sys.platform にメジャーバージョンが含まれなくなりました。 'aix5''aix7'ではなく、常に'aix'です。 古いPythonバージョンにはバージョン番号が含まれているため、上記のstartswithイディオムを常に使用することをお勧めします。

も参照してください

os.name の粒度は粗くなります。 os.uname()は、システムに依存するバージョン情報を提供します。

platform モジュールは、システムのIDの詳細なチェックを提供します。

sys.platlibdir

プラットフォーム固有のライブラリディレクトリの名前。 これは、標準ライブラリのパスとインストールされた拡張モジュールのパスを構築するために使用されます。

ほとんどのプラットフォームで"lib"と同じです。 FedoraおよびSuSEでは、64ビットプラットフォームの"lib64"と同じであり、次のsys.pathパスを提供します(X.YはPython major.minorバージョンです) :

  • /usr/lib64/pythonX.Y/:標準ライブラリ( os モジュールのos.pyなど)

  • /usr/lib64/pythonX.Y/lib-dynload/:標準ライブラリのC拡張モジュール( errno モジュールのように、正確なファイル名はプラットフォーム固有です)

  • /usr/lib/pythonX.Y/site-packages/sys.platlibdir ではなく、常にlibを使用):サードパーティモジュール

  • /usr/lib64/pythonX.Y/site-packages/:サードパーティパッケージのC拡張モジュール

バージョン3.9の新機能。

sys.prefix

プラットフォームに依存しないPythonファイルがインストールされるサイト固有のディレクトリプレフィックスを示す文字列。 デフォルトでは、これは文字列'/usr/local'です。 これは、ビルド時に configure スクリプトの--prefix引数を使用して設定できます。 Pythonライブラリモジュールのメインコレクションはディレクトリprefix/lib/pythonX.Yにインストールされ、プラットフォームに依存しないヘッダーファイル(pyconfig.hを除くすべて)はprefix/include/pythonX.Yに保存されます。ここで、 XY [ X191X]は、Pythonのバージョン番号です(例:3.2)。

ノート

仮想環境が有効な場合、この値はsite.pyで変更され、仮想環境を指します。 Pythonインストールの値は、 base_prefix を介して引き続き利用できます。

sys.ps1

sys.ps2

インタプリタのプライマリプロンプトとセカンダリプロンプトを指定する文字列。 これらは、インタプリタがインタラクティブモードの場合にのみ定義されます。 この場合の初期値は'>>> ''... 'です。 文字列以外のオブジェクトがいずれかの変数に割り当てられている場合、インタプリタが新しい対話型コマンドを読み取る準備をするたびに、その str()が再評価されます。 これは、動的プロンプトを実装するために使用できます。
sys.setdlopenflags(n)
インタプリタが拡張モジュールをロードするときなど、dlopen()呼び出しにインタプリタが使用するフラグを設定します。 特に、これにより、sys.setdlopenflags(0)と呼ばれる場合、モジュールをインポートするときにシンボルの遅延解決が可能になります。 拡張モジュール間でシンボルを共有するには、sys.setdlopenflags(os.RTLD_GLOBAL)として呼び出します。 フラグ値の記号名は、 os モジュール(RTLD_xxx定数、例: os.RTLD_LAZY )。
sys.setprofile(profilefunc)

システムのプロファイル関数を設定します。これにより、PythonでPythonソースコードプロファイラーを実装できます。 Pythonプロファイラーの詳細については、 Pythonプロファイラーの章を参照してください。 システムのプロファイル関数は、システムのトレース関数と同様に呼び出されます( settrace()を参照)が、異なるイベントで呼び出されます。たとえば、実行されたコード行ごとに呼び出されません(呼び出し時のみ)。およびreturnですが、例外が設定されている場合でもreturnイベントが報告されます)。 この関数はスレッド固有ですが、プロファイラーがスレッド間のコンテキストスイッチについて知る方法がないため、複数のスレッドが存在する場合にこれを使用することは意味がありません。 また、戻り値は使用されないため、Noneを返すだけで済みます。 プロファイル機能にエラーがあると、それ自体が設定解除されます。

プロファイル関数には、 frameevent 、および arg の3つの引数が必要です。 frame は現在のスタックフレームです。 event は文字列です:'call''return''c_call''c_return'、または'c_exception'arg は、イベントタイプによって異なります。

イベントの意味は次のとおりです。

'call'

関数が呼び出されます(または他のコードブロックが入力されます)。 プロファイル関数が呼び出されます。 argNoneです。

'return'

関数(または他のコードブロック)が返されようとしています。 プロファイル関数が呼び出されます。 arg は返される値であり、イベントの原因が例外の発生である場合はNoneです。

'c_call'

AC関数が呼び出されようとしています。 これは、拡張機能または組み込みの場合があります。 arg はC関数オブジェクトです。

'c_return'

AC機能が戻ってきました。 arg はC関数オブジェクトです。

'c_exception'

AC機能で例外が発生しました。 arg はC関数オブジェクトです。

sys.setrecursionlimit(limit)

Pythonインタープリタースタックの最大深度を limit に設定します。 この制限により、無限再帰がCスタックのオーバーフローを引き起こしてPythonをクラッシュさせるのを防ぎます。

可能な上限はプラットフォームによって異なります。 深い再帰を必要とするプログラムと、より高い制限をサポートするプラットフォームがある場合、ユーザーは制限をより高く設定する必要がある場合があります。 制限が高すぎるとクラッシュする可能性があるため、これは注意して行う必要があります。

現在の再帰深度で新しい制限が低すぎる場合、 RecursionError 例外が発生します。

バージョン3.5.1で変更:現在の再帰深度で新しい制限が低すぎる場合、 RecursionError 例外が発生するようになりました。

sys.setswitchinterval(interval)

インタプリタのスレッド切り替え間隔(秒単位)を設定します。 この浮動小数点値は、同時に実行されているPythonスレッドに割り当てられる「タイムスライス」の理想的な期間を決定します。 特に長時間実行される内部関数またはメソッドが使用されている場合は、実際の値が高くなる可能性があることに注意してください。 また、間隔の終了時にどのスレッドがスケジュールされるかは、オペレーティングシステムの決定です。 インタプリタには独自のスケジューラがありません。

バージョン3.2の新機能。

sys.settrace(tracefunc)

システムのトレース関数を設定します。これにより、PythonでPythonソースコードデバッガーを実装できます。 関数はスレッド固有です。 デバッガーが複数のスレッドをサポートするには、デバッグ中のスレッドごとに settrace()を使用してトレース関数を登録するか、 threading.settrace()を使用する必要があります。

トレース関数には、 frameevent 、および arg の3つの引数が必要です。 frame は現在のスタックフレームです。 event は文字列です:'call''line''return''exception'、または'opcode'arg は、イベントタイプによって異なります。

新しいローカルスコープが入力されるたびに、トレース関数が呼び出されます( event'call'に設定されている場合)。 新しいスコープに使用されるローカルトレース関数への参照を返すか、スコープをトレースしない場合はNoneを返す必要があります。

ローカルトレース関数は、それ自体(またはそのスコープでさらにトレースするための別の関数)への参照を返すか、Noneでそのスコープでのトレースをオフにする必要があります。

トレース機能でエラーが発生した場合は、settrace(None)を呼び出すのと同じように、設定が解除されます。

イベントの意味は次のとおりです。

'call'

関数が呼び出されます(または他のコードブロックが入力されます)。 グローバルトレース関数が呼び出されます。 argNoneです。 戻り値はローカルトレース関数を指定します。

'line'

インタプリタは、新しいコード行を実行するか、ループの条件を再実行しようとしています。 ローカルトレース関数が呼び出されます。 argNoneです。 戻り値は、新しいローカルトレース関数を指定します。 これがどのように機能するかの詳細な説明については、Objects/lnotab_notes.txtを参照してください。 フレームのf_trace_linesFalse に設定すると、そのフレームの行ごとのイベントを無効にできます。

'return'

関数(または他のコードブロック)が返されようとしています。 ローカルトレース関数が呼び出されます。 arg は返される値であり、イベントの原因が例外の発生である場合はNoneです。 トレース関数の戻り値は無視されます。

'exception'

例外が発生しました。 ローカルトレース関数が呼び出されます。 arg はタプル(exception, value, traceback)です。 戻り値は、新しいローカルトレース関数を指定します。

'opcode'

インタプリタが新しいオペコードを実行しようとしています(オペコードの詳細については、 dis を参照してください)。 ローカルトレース関数が呼び出されます。 argNoneです。 戻り値は、新しいローカルトレース関数を指定します。 デフォルトでは、オペコードごとのイベントは発行されません。フレームでf_trace_opcodesTrue に設定して、明示的に要求する必要があります。

例外が呼び出し元のチェーンに伝播されると、'exception'イベントが各レベルで生成されることに注意してください。

よりきめ細かい使用法として、すでにインストールされているトレース関数からの戻り値を介して間接的に設定されるのではなく、frame.f_trace = tracefuncを明示的に割り当てることによってトレース関数を設定することができます。 これは、現在のフレームでトレース機能をアクティブにするためにも必要ですが、 settrace()では実行されません。 これが機能するためには、ランタイムトレース機構を有効にするために settrace()とともにグローバルトレース関数がインストールされている必要がありますが、同じトレース関数である必要はありません(例: これは、Noneを返すだけで、各フレームですぐに無効になる、オーバーヘッドの少ないトレース関数である可能性があります。

コードおよびフレームオブジェクトの詳細については、標準タイプ階層を参照してください。

バージョン3.7で変更: 'opcode'イベントタイプが追加されました。 f_trace_linesおよびf_trace_opcodes属性がフレームに追加されました

sys.set_asyncgen_hooks(firstiter, finalizer)

非同期ジェネレータイテレータを引数として受け入れる呼び出し可能である2つのオプションのキーワード引数を受け入れます。 firstiter 呼び出し可能オブジェクトは、非同期ジェネレーターが初めて繰り返されるときに呼び出されます。 ファイナライザーは、非同期ジェネレーターがガベージコレクションされようとしているときに呼び出されます。

基盤となるAPIは2つの呼び出しで構成されており、それぞれが独自のイベントを発生させる必要があるため、2つの監査イベントが発生します。

バージョン3.6の新機能:詳細については PEP 525 を、ファイナライザーメソッドの参照例については[X12X]の実装を参照してください。 X162X] in :source: `Lib / asyncio / base_events.py`

ノート

この機能は暫定的に追加されました(詳細は PEP 411 を参照してください)。

sys.set_coroutine_origin_tracking_depth(depth)

コルーチンオリジントラッキングを有効または無効にできます。 有効にすると、コルーチンオブジェクトのcr_origin属性には、コルーチンオブジェクトが作成されたトレースバックを説明する(ファイル名、行番号、関数名)タプルのタプルが含まれ、最新の呼び出しが最初になります。 無効にすると、cr_originはNoneになります。

有効にするには、ゼロより大きい depth 値を渡します。 これにより、情報がキャプチャされるフレームの数が設定されます。 無効にするには、set depth をゼロに渡します。

この設定はスレッド固有です。

バージョン3.7の新機能。

ノート

この機能は暫定的に追加されました(詳細は PEP 411 を参照)。デバッグ目的でのみ使用してください。

sys._enablelegacywindowsfsencoding()

3.6より前のバージョンのPythonとの一貫性を保つために、デフォルトのファイルシステムエンコーディングとエラーモードをそれぞれ「mbcs」と「replace」に変更します。

これは、Pythonを起動する前に PYTHONLEGACYWINDOWSFSENCODING 環境変数を定義することと同じです。

バージョン3.6の新機能:詳細については、 PEP 529 を参照してください。

sys.stdin
sys.stdout
sys.stderr

ファイルオブジェクトは、標準の入力、出力、およびエラーのためにインタープリターによって使用されます。

  • stdinは、すべての対話型入力( input()の呼び出しを含む)に使用されます。

  • stdoutは、 print()および expression ステートメントの出力、および input()のプロンプトに使用されます。

  • インタプリタ自身のプロンプトとそのエラーメッセージはstderrに送られます。

これらのストリームは、 open()関数によって返されるものと同様の通常のテキストファイルです。 それらのパラメータは次のように選択されます。

  • 文字エンコードはプラットフォームに依存します。 Windows以外のプラットフォームは、ロケールエンコーディングを使用します( locale.getpreferredencoding()を参照)。

    Windowsでは、コンソールデバイスにUTF-8が使用されます。 ディスクファイルやパイプなどの文字以外のデバイスは、システムロケールエンコーディングを使用します(つまり、 ANSIコードページ)。 NULなどの非コンソールキャラクターデバイス(つまり ここで、isatty()Trueを返します)起動時のコンソール入力および出力コードページの値を、それぞれstdinおよびstdout / stderrに使用します。 プロセスが最初にコンソールに接続されていない場合、これはデフォルトでシステムロケールエンコーディングになります。

    コンソールの特別な動作は、Pythonを起動する前に環境変数PYTHONLEGACYWINDOWSSTDIOを設定することでオーバーライドできます。 その場合、コンソールのコードページは他の文字デバイスと同様に使用されます。

    すべてのプラットフォームで、Pythonを起動する前に PYTHONIOENCODING 環境変数を設定するか、新しい -X utf8を使用して、文字エンコードをオーバーライドできます。コマンドラインオプションと PYTHONUTF8 環境変数。 ただし、Windowsコンソールの場合、これは PYTHONLEGACYWINDOWSSTDIO も設定されている場合にのみ適用されます。

  • インタラクティブな場合、stdoutストリームはラインバッファリングされます。 それ以外の場合は、通常のテキストファイルのようにブロックバッファリングされます。 stderrストリームは、どちらの場合もラインバッファリングされます。 -u コマンドラインオプションを渡すか、 PYTHONUNBUFFERED 環境変数を設定することで、両方のストリームをバッファリング解除できます。

バージョン3.9で変更:非対話型stderrは、完全にバッファリングされるのではなく、ラインバッファリングされるようになりました。

ノート

標準ストリームとの間でバイナリデータを読み書きするには、基になるバイナリ buffer オブジェクトを使用します。 たとえば、 stdout にバイトを書き込むには、sys.stdout.buffer.write(b'abc')を使用します。

ただし、ライブラリを作成している場合(および、そのコードが実行されるコンテキストを制御しない場合)、標準ストリームが io.StringIO のようなファイルのようなオブジェクトに置き換えられる可能性があることに注意してください。 buffer属性をサポートします。

sys.__stdin__
sys.__stdout__
sys.__stderr__

これらのオブジェクトには、プログラムの開始時にstdinstderr、およびstdoutの元の値が含まれています。 これらはファイナライズ中に使用され、sys.std*オブジェクトがリダイレクトされているかどうかに関係なく、実際の標準ストリームに出力するのに役立つ可能性があります。

また、壊れたオブジェクトで上書きされた場合に、実際のファイルを既知の作業ファイルオブジェクトに復元するためにも使用できます。 ただし、これを行うための推奨される方法は、前のストリームを置き換える前に明示的に保存し、保存されたオブジェクトを復元することです。

ノート

条件によっては、stdinstdoutstderr、および元の値__stdin____stdout____stderr__が可能です。 Noneになります。 これは通常、コンソールに接続されていないWindows GUIアプリと、 pythonw で開始されたPythonアプリの場合です。

sys.thread_info

スレッドの実装に関する情報を保持する名前付きタプル

属性

説明

name

スレッド実装の名前:

  • 'nt':Windowsスレッド

  • 'pthread':POSIXスレッド

  • 'solaris':Solarisスレッド


lock

ロック実装の名前:

  • 'semaphore':ロックはセマフォを使用します

  • 'mutex+cond':ロックはミューテックスと条件変数を使用します

  • Noneこの情報が不明な場合


version

スレッドライブラリの名前とバージョン。 文字列、またはこの情報が不明な場合はNoneです。

バージョン3.3の新機能。

sys.tracebacklimit
この変数を整数値に設定すると、未処理の例外が発生したときに出力されるトレースバック情報の最大レベル数が決まります。 デフォルトは1000です。 0以下に設定すると、すべてのトレースバック情報が抑制され、例外のタイプと値のみが出力されます。
sys.unraisablehook(unraisable, /)

発生しない例外を処理します。

例外が発生したが、Pythonがそれを処理する方法がない場合に呼び出されます。 たとえば、デストラクタが例外を発生させたとき、またはガベージコレクション中に( gc.collect())。

unraisable 引数には、次の属性があります。

  • exc_type :例外タイプ。

  • exc_value :例外値。Noneの場合があります。

  • exc_traceback :例外トレースバック。Noneの場合があります。

  • err_msg :エラーメッセージ。Noneの可能性があります。

  • object :例外の原因となっているオブジェクト。Noneの可能性があります。

デフォルトのフック形式は、 err_msg および object を次のようにフォーマットします。f'{err_msg}: {object!r}'; err_msgNoneの場合は、「Exceptionignoredin」エラーメッセージを使用してください。

sys.unraisablehook()をオーバーライドして、発生しない例外の処理方法を制御できます。

カスタムフックを使用して exc_value を保存すると、参照サイクルを作成できます。 例外が不要になったときに参照サイクルを中断するには、明示的にクリアする必要があります。

カスタムフックを使用してオブジェクトを保存すると、ファイナライズ中のオブジェクトに設定されている場合、オブジェクトを復活させることができます。 オブジェクトの復活を避けるために、カスタムフックの完了後にオブジェクトを保存しないでください。

キャッチされない例外を処理する excepthook()も参照してください。

バージョン3.8の新機能。

sys.version
Pythonインタープリターのバージョン番号に加えて、使用されるビルド番号とコンパイラーに関する追加情報を含む文字列。 この文字列は、インタラクティブインタプリタの起動時に表示されます。 そこからバージョン情報を抽出するのではなく、 version_infoplatform モジュールによって提供される関数を使用してください。
sys.api_version
このインタプリタのCAPIバージョン。 プログラマーは、Pythonと拡張モジュールの間でバージョンの競合をデバッグするときにこれが役立つ場合があります。
sys.version_info

バージョン番号の5つのコンポーネントを含むタプル:メジャーマイナーマイクロリリースレベル、およびシリアル ]。 releaselevel を除くすべての値は整数です。 リリースレベルは、'alpha''beta''candidate'、または'final'です。 Pythonバージョン2.0に対応するversion_infoの値は(2, 0, 0, 'final', 0)です。 コンポーネントには名前でアクセスすることもできるため、sys.version_info[0]sys.version_info.majorなどと同等です。

バージョン3.1で変更:名前付きコンポーネント属性が追加されました。

sys.warnoptions
これは、警告フレームワークの実装の詳細です。 この値は変更しないでください。 警告フレームワークの詳細については、 warnings モジュールを参照してください。
sys.winver
Windowsプラットフォームでレジストリキーを形成するために使用されるバージョン番号。 これは、PythonDLLに文字列リソース1000として保存されます。 値は通常、バージョンの最初の3文字です。 これは、情報提供の目的で sys モジュールで提供されます。 この値を変更しても、Pythonで使用されるレジストリキーには影響しません。
sys._xoptions

-X コマンドラインオプションを介して渡されるさまざまな実装固有のフラグの辞書。 オプション名は、明示的に指定されている場合はその値にマップされるか、 True にマップされます。 例:

$ ./python -Xa=b -Xc
Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys._xoptions
{'a': 'b', 'c': True}

バージョン3.2の新機能。

引用

C99
ISO / IEC 9899:1999。 「プログラミング言語–C」 この規格の公開ドラフトは、 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdfで入手できます。