インタープリタの初期化と終了処理¶
初期化前にインタープリタを設定する方法の詳細は、Python の初期化設定 を参照してください。
Python の初期化前¶
Python を組み込むアプリケーションでは、一部の関数と グローバルな設定変数 を除き、ほかの Python/C API を使う前に Py_Initialize() を呼び出さなければなりません。
次の関数は Python の初期化の前でも安全に呼び出せます:
インタープリタを初期化する関数:
Python 初期化設定 で説明するランタイムの事前初期化関数
設定関数:
PyInitFrozenExtensions()Python 初期化設定 で説明する設定関数
情報取得の関数:
ユーティリティ:
Python 初期化設定 で説明する状態の報告とユーティリティの関数
メモリアロケータ:
同期:
注釈
上に挙げた関数の一部と似ていても、Py_EncodeLocale()、PyEval_InitThreads()、Py_RunMain() は、インタープリタの初期化前に 呼び出してはなりません。
グローバルな設定変数¶
Python には、様々な機能やオプションを制御するグローバルな設定のための変数があります。 デフォルトでは、これらのフラグは コマンドラインオプション で制御されます。
オプションでフラグがセットされると、フラグの値はそのオプションがセットされた回数になります。
例えば、 -b では Py_BytesWarningFlag が 1 に設定され、 -bb では Py_BytesWarningFlag が 2 に設定されます。
-
int Py_BytesWarningFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.bytes_warningを設定してください。 Python の初期化設定 を参照してください。bytesまたはbytearrayをstrと比較した場合、または、bytesをintと比較した場合に警告を発生させます。2以上の値を設定している場合は、エラーを発生させます。-bオプションで設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_DebugFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.parser_debugを設定してください。 Python の初期化設定 を参照してください。パーサーのデバッグ出力を有効にします。(専門家専用です。コンパイルオプションに依存します)。
-dオプションとPYTHONDEBUG環境変数で設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_DontWriteBytecodeFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.write_bytecodeを設定してください。 Python の初期化設定 を参照してください。非ゼロに設定した場合、Python はソースモジュールのインポート時に
.pycファイルの作成を試みません。-BオプションとPYTHONDONTWRITEBYTECODE環境変数で設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_FrozenFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.pathconfig_warningsを設定してください。 Python の初期化設定 を参照してください。_freeze_moduleプログラムとfrozenmainプログラムが使用する非公開フラグです。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_HashRandomizationFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.hash_seedとPyConfig.use_hash_seedを設定してください。 Python の初期化設定 を参照してください。PYTHONHASHSEED環境変数が空でない文字列に設定された場合に、1が設定されます。フラグがゼロでない場合、
PYTHONHASHSEED環境変数を読みシークレットハッシュシードを初期化します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_IgnoreEnvironmentFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.use_environmentを設定してください。 Python の初期化設定 を参照してください。PYTHONPATHやPYTHONHOMEなど、設定されているすべてのPYTHON*環境変数を無視します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_InspectFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.inspectを設定してください。 Python の初期化設定 を参照してください。最初の引数にスクリプトを指定した場合や
-cオプションを使った場合は、sys.stdinが端末でなくても、スクリプトやコマンドの実行後に対話モードに入ります。-iオプションとPYTHONINSPECT環境変数で設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_InteractiveFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.interactiveを設定してください。 Python の初期化設定 を参照してください。-iオプションで設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_IsolatedFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.isolatedを設定してください。 Python の初期化設定 を参照してください。Python を隔離モードで実行します。 隔離モードでは
sys.pathはスクリプトのディレクトリやユーザのサイトパッケージのディレクトリを含みません。-Iオプションで設定します。Added in version 3.4.
バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_LegacyWindowsFSEncodingFlag¶
この API は後方互換性のために残されています。 代わりに
PyPreConfig.legacy_windows_fs_encodingを設定してください。 Python の初期化設定 を参照してください。フラグがゼロ以外の場合は、ファイルシステムエンコーディングとエラーハンドラー として、UTF-8 と
surrogatepassエラーハンドラーの代わりに、mbcsとreplaceエラーハンドラーを使います。PYTHONLEGACYWINDOWSFSENCODING環境変数が空でない文字列に設定された場合に、1に設定されます。より詳しくは PEP 529 を参照してください。
利用可能な環境: Windows.
バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_LegacyWindowsStdioFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.legacy_windows_stdioを設定してください。 Python の初期化設定 を参照してください。フラグがゼロ以外の場合は、
sysの標準ストリームにio._WindowsConsoleIOの代わりにio.FileIOを使います。PYTHONLEGACYWINDOWSSTDIO環境変数が空でない文字列に設定された場合に、1に設定されます。より詳しくは PEP 528 を参照してください。
利用可能な環境: Windows.
バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_NoSiteFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.site_importを設定してください。 Python の初期化設定 を参照してください。siteモジュールの import と、そのモジュールが行なっていた site ごとのsys.pathへの操作を無効にします。後でsiteを明示的に import しても、これらの操作は実行されません (実行したい場合は、site.main()を呼び出してください)。-Sオプションで設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_NoUserSiteDirectory¶
この API は後方互換性のために残されています。 代わりに
PyConfig.user_site_directoryを設定してください。 Python の初期化設定 を参照してください。ユーザのサイトパッケージのディレクトリをsys.pathに追加しません。-sオプション、-I、PYTHONNOUSERSITE環境変数で設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_OptimizeFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.optimization_levelを設定してください。 Python の初期化設定 を参照してください。-OオプションとPYTHONOPTIMIZE環境変数で設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_QuietFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.quietを設定してください。 Python の初期化設定 を参照してください。インタラクティブモードでも copyright とバージョンのメッセージを表示しません。
-qオプションで設定します。Added in version 3.2.
バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_UnbufferedStdioFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.buffered_stdioを設定してください。 Python の初期化設定 を参照してください。標準出力と標準エラーをバッファリングしないように強制します。
-uオプションとPYTHONUNBUFFERED環境変数で設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
-
int Py_VerboseFlag¶
この API は後方互換性のために残されています。 代わりに
PyConfig.verboseを設定してください。 Python の初期化設定 を参照してください。モジュールが初期化されるたびにメッセージを出力し、それがどこ (ファイル名やビルトインモジュール) からロードされたのかを表示します。 値が 2 以上の場合は、モジュールを検索するときにチェックしたファイルごとにメッセージを出力します。また、終了時のモジュールクリーンアップに関する情報も提供します。
-vオプションとPYTHONVERBOSE環境変数で設定します。バージョン 3.12 で非推奨、バージョン 3.15 で削除予定.
インタープリタの初期化と終了処理¶
-
void Py_Initialize()¶
- 次に属します: Stable ABI.
Python インタープリタを初期化します。 Python を組み込むアプリケーションでは、ほかの Python/C API 関数を使う前に呼び出す必要があります。 少数の例外については Python の初期化前 を参照してください。
This initializes the table of loaded modules (
sys.modules), and creates the fundamental modulesbuiltins,__main__andsys. It also initializes the module search path (sys.path). It does not setsys.argv; use the Python Initialization Configuration API for that. This is a no-op when called for a second time (without callingPy_FinalizeEx()first). There is no return value; it is a fatal error if the initialization fails.Python の初期化設定 をカスタマイズするには、
Py_InitializeFromConfig()を使ってください。注釈
Windows では
O_TEXTからO_BINARYへコンソールモードが変更されますが、これはその C ランタイムを使っているコンソールでの Python 以外の使い勝手にも影響を及ぼします。
-
void Py_InitializeEx(int initsigs)¶
- 次に属します: Stable ABI.
initsigs が
1の場合はPy_Initialize()と同じように動作します。 initsigs が0の場合は、シグナルハンドラーの初期化と登録を省略します。 これは、CPython をより大きなアプリケーションに組み込む場合に有用なことがあります。Python の初期化設定 をカスタマイズするには、
Py_InitializeFromConfig()を使ってください。
-
PyStatus Py_InitializeFromConfig(const PyConfig *config)¶
PyConfig による初期化 で説明するように、config の設定で Python を初期化します。
インタープリタの事前初期化、ランタイム設定構造体への値の設定、返される状態構造体の調べ方については、Python 初期化設定 を参照してください。
-
int Py_IsInitialized()¶
- 次に属します: Stable ABI.
Python インタプリタが初期化済みであれば真(非ゼロ)を、さもなければ偽(ゼロ)を返します。
Py_FinalizeEx()を呼び出した後は、Py_Initialize()を再び呼び出すまで、この関数は偽を返します。
-
int Py_IsFinalizing()¶
- 次に属します: Stable ABI (バージョン 3.13 より).
メインの Python インタープリタが 終了処理中 なら真 (ゼロ以外) を返します。 それ以外の場合は偽 (ゼロ) を返します。
Added in version 3.13.
-
int Py_FinalizeEx()¶
- 次に属します: Stable ABI (バージョン 3.6 より).
Py_Initialize()と、その後の Python/C API 関数の使用による初期化をすべて元に戻します。 さらに、最後にPy_Initialize()を呼び出してから作成され、まだ破棄されていないサブインタープリタをすべて破棄します (以下のPy_NewInterpreter()を参照)。 再びPy_Initialize()を呼び出さずにもう一度呼び出しても、何も行いません。Py_Initialize()の逆の処理なので、同じスレッドで同じインタープリタがアクティブな状態で呼び出す必要があります。 つまり、メインスレッドとメインインタープリタです。Py_RunMain()の実行中には決して呼び出してはなりません。通常の戻り値は
0です。 終了処理中にバッファー内のデータの書き出しでエラーがあった場合は、-1を返します。Python は、Python インタープリタが確保したメモリをできる限り解放しようとします。 そのため、C 拡張は、以前に確保したすべての PyObject を適切に後始末してから、次の
Py_Initialize()の呼び出しで使うようにしなければなりません。 そうしないと、脆弱性や不正な動作につながる可能性があります。この関数が提供されている理由はいくつかあります。Python の埋め込みを行っているアプリケーションでは、アプリケーションを再起動することなく Python を再起動したいことがあります。また、動的ロード可能イブラリ (あるいは DLL) から Python インタプリタをロードするアプリケーションでは、DLL をアンロードする前に Python が確保したメモリを全て解放したいと考えるかもしれません。アプリケーション内で起きているメモリリークを追跡する際に、開発者は Python が確保したメモリをアプリケーションの終了前に解放させたいと思う場合もあります。
Bugs and caveats: The destruction of modules and objects in modules is done in random order; this may cause destructors (
__del__()methods) to fail when they depend on other objects (even functions) or modules. Dynamically loaded extension modules loaded by Python are not unloaded. Small amounts of memory allocated by the Python interpreter may not be freed (if you find a leak, please report it). Memory tied up in circular references between objects is not freed. Interned strings will all be deallocated regardless of their reference count. Some memory allocated by extension modules may not be freed. Some extensions may not work properly if their initialization routine is called more than once; this can happen if an application callsPy_Initialize()andPy_FinalizeEx()more than once.Py_FinalizeEx()must not be called recursively from within itself. Therefore, it must not be called by any code that may be run as part of the interpreter shutdown process, such asatexithandlers, object finalizers, or any code that may be run while flushing the stdout and stderr files.引数無しで 監査イベント
cpython._PySys_ClearAuditHooksを送出します。Added in version 3.6.
-
void Py_Finalize()¶
- 次に属します: Stable ABI.
この関数は
Py_FinalizeEx()の後方互換性バージョンで、戻り値がありません。
-
int Py_BytesMain(int argc, char **argv)¶
- 次に属します: Stable ABI (バージョン 3.8 より).
Py_Main()と同様ですが、argv はバイト文字列の配列です。 これにより、呼び出し元のアプリケーションは、テキストのデコードを CPython ランタイムに任せられます。Added in version 3.8.
-
int Py_Main(int argc, wchar_t **argv)¶
- 次に属します: Stable ABI.
標準インタープリタのメインプログラムです。 初期化から終了処理までの一連の処理に加え、環境変数とコマンドラインから設定を読み取り、コマンドライン に従って
__main__を実行する処理をまとめて行います。より大きなアプリケーションに Python ランタイムを組み込むだけでなく、CPython の完全なコマンドラインインターフェースをサポートしたいプログラムのために提供されています。
argc と argv 引数は、C プログラムの
main()関数に渡すものに似ていますが、argv の各要素をあらかじめPy_DecodeLocale()でwchar_tに変換する点が異なります。 引数リストの各要素が、渡された文字列とは別の文字列を指すように変更される可能性があることにも注意してください。 ただし、引数リストが指す文字列の内容は変更されません。引数リストが有効な Python コマンドラインを表していない場合は
2を返し、それ以外の場合はPy_RunMain()と同じ値を返します。ランタイムの設定 の節で説明する CPython ランタイム設定 API を使うと、エラー処理を除いて、
Py_Mainはおおむね次の処理と等価です。PyConfig config; PyConfig_InitPythonConfig(&config); PyConfig_SetArgv(&config, argc, argv); Py_InitializeFromConfig(&config); PyConfig_Clear(&config); Py_RunMain();
通常、Python を組み込むアプリケーションは、
Py_Initialize()、Py_InitializeEx()、Py_InitializeFromConfig()を直接呼び出す 代わりに この関数を呼び出します。 その場合、すべての設定はこのドキュメントのほかの箇所で説明されているとおりに適用されます。 先にランタイム初期化 API を呼び出した 後で この関数を呼び出す場合は、環境変数とコマンドラインのどの設定が更新されるかはバージョンに依存します。 ランタイムの最初の初期化で一度設定した値を、後から正しく変更できるかどうかが設定によって異なるためです。
-
int Py_FrozenMain(int argc, char **argv)¶
The main program for a "frozen" Python program (an executable that embeds the interpreter together with the bytecode of the program's modules, as produced by the freeze utility; see Tools/freeze).
This function initializes the interpreter, imports the frozen module named
__main__, and finalizes the interpreter. The frozen modules must have been registered inPyImport_FrozenModulesbefore calling this function; it is a fatal error if__main__is not among them.argc and argv are byte strings like the arguments of a C program's
mainfunction, and are passed to the interpreter withPyConfig_SetBytesArgv(). UnlikePy_Main(), the arguments are not parsed as Python command line options (PyConfig.parse_argvis0), so all of them are made available to the program insys.argv. Apart from that, the interpreter uses the Python Configuration, so environment variables such asPYTHONPATHare honored. Warnings about the path configuration (PyConfig.pathconfig_warnings) are suppressed. IfPYTHONINSPECTis set and standard input is a terminal, an interactive prompt is run after__main__has finished, as with the-ioption.Return
0if__main__ran without an unhandled exception,1otherwise, and120if finalizing the interpreter failed (seePy_FinalizeEx()). An unhandledSystemExitterminates the process. If the interpreter cannot be initialized, the process exits viaPy_ExitStatusException().On Windows, this function is not exported by the Python DLL. The freeze utility compiles
Python/frozenmain.cinto the frozen program instead, together with the Windows-specific hooks that the function requires.
-
int Py_RunMain(void)¶
設定が完了した CPython ランタイムで、メインモジュールを実行します。
コマンドラインまたは設定で指定された、コマンド (
PyConfig.run_command)、スクリプト (PyConfig.run_filename)、またはモジュール (PyConfig.run_module) を実行します。 どの値も設定されていなければ、__main__モジュールのグローバル名前空間を使って、Python の対話プロンプト (REPL) を実行します。PyConfig.inspectが設定されていない場合 (デフォルト)、インタープリタが例外を送出せず正常終了すれば0を返します。 未処理のSystemExitがあればその終了ステータスを、それ以外の未処理の例外があれば1を返します。If
PyConfig.inspectis set (such as when the-ioption is used), rather than returning when the interpreter exits, execution will instead resume in an interactive Python prompt (REPL) using the__main__module's global namespace. If the interpreter exited with an exception, it is immediately raised in the REPL session. The function return value is then determined by the way the REPL session terminates:0,1, or the status of aSystemExit, as specified above.この関数は、戻る前に必ず Python インタープリタの終了処理を行います。
Py_RunMain()を使って常に隔離モードで実行するようカスタマイズした Python の例は、Python の設定 を参照してください。
-
int PyUnstable_AtExit(PyInterpreterState *interp, void (*func)(void*), void *data)¶
- これは Unstable APIです。マイナーリリースで予告なく変更されることがあります。
対象のインタープリタ interp に
atexitコールバックを登録します。Py_AtExit()と似ていますが、インタープリタと、コールバックに渡すデータポインターを明示的に受け取ります。interp の スレッド状態がアタッチされていなければなりません。
Added in version 3.13.
Cautions regarding runtime finalization¶
In the late stage of interpreter shutdown, after attempting to wait for
non-daemon threads to exit (though this can be interrupted by
KeyboardInterrupt) and running the atexit functions, the runtime
is marked as finalizing: Py_IsFinalizing() and
sys.is_finalizing() return true. At this point, only the finalization
thread that initiated finalization (typically the main thread) is allowed to
acquire the GIL.
If any thread, other than the finalization thread, attempts to attach a thread state during finalization, either explicitly or implicitly, the thread enters a permanently blocked state where it remains until the program exits. In most cases this is harmless, but this can result in deadlock if a later stage of finalization attempts to acquire a lock owned by the blocked thread, or otherwise waits on the blocked thread.
Gross? Yes. This prevents random crashes and/or unexpectedly skipped C++ finalizations further up the call stack when such threads were forcibly exited here in CPython 3.13 and earlier. The CPython runtime thread state C APIs have never had any error reporting or handling expectations at thread state attachment time that would've allowed for graceful exit from this situation. Changing that would require new stable C APIs and rewriting the majority of C code in the CPython ecosystem to use those with error handling.
プロセスワイドのパラメータ¶
-
void Py_SetProgramName(const wchar_t *name)¶
- 次に属します: Stable ABI.
この API は後方互換性のために残されています。 代わりに
PyConfig.program_nameを設定してください。 Python の初期化設定 を参照してください。This function should be called before
Py_Initialize()is called for the first time, if it is called at all. It tells the interpreter the value of theargv[0]argument to themain()function of the program (converted to wide characters). This is used byPy_GetPath()and some other functions below to find the Python run-time libraries relative to the interpreter executable. The default value is'python'. The argument should point to a zero-terminated wide character string in static storage whose contents will not change for the duration of the program's execution. No code in the Python interpreter will change the contents of this storage.バイト文字列をデコードして wchar_t* 文字列を取得するには、
Py_DecodeLocale()を使ってください。バージョン 3.11 で非推奨、バージョン 3.15 で削除予定.
-
wchar_t *Py_GetProgramName()¶
- 次に属します: Stable ABI.
Return the program name set with
PyConfig.program_name, or the default. The returned string points into static storage; the caller should not modify its value.This function should not be called before
Py_Initialize(), otherwise it returnsNULL.バージョン 3.10 で変更: It now returns
NULLif called beforePy_Initialize().バージョン 3.13 で非推奨、バージョン 3.15 で削除予定: Use
PyConfig_Get("executable")(sys.executable) instead.
-
wchar_t *Py_GetPrefix()¶
- 次に属します: Stable ABI.
Return the prefix for installed platform-independent files. This is derived through a number of complicated rules from the program name set with
PyConfig.program_nameand some environment variables; for example, if the program name is'/usr/local/bin/python', the prefix is'/usr/local'. The returned string points into static storage; the caller should not modify its value. This corresponds to the prefix variable in the top-levelMakefileand the--prefixargument to the configure script at build time. The value is available to Python code assys.base_prefix. It is only useful on Unix. See also the next function.This function should not be called before
Py_Initialize(), otherwise it returnsNULL.バージョン 3.10 で変更: It now returns
NULLif called beforePy_Initialize().バージョン 3.13 で非推奨、バージョン 3.15 で削除予定: Use
PyConfig_Get("base_prefix")(sys.base_prefix) instead. UsePyConfig_Get("prefix")(sys.prefix) if virtual environments need to be handled.
-
wchar_t *Py_GetExecPrefix()¶
- 次に属します: Stable ABI.
Return the exec-prefix for installed platform-dependent files. This is derived through a number of complicated rules from the program name set with
PyConfig.program_nameand some environment variables; for example, if the program name is'/usr/local/bin/python', the exec-prefix is'/usr/local'. The returned string points into static storage; the caller should not modify its value. This corresponds to the exec_prefix variable in the top-levelMakefileand the--exec-prefixargument to the configure script at build time. The value is available to Python code assys.base_exec_prefix. It is only useful on Unix.Background: The exec-prefix differs from the prefix when platform dependent files (such as executables and shared libraries) are installed in a different directory tree. In a typical installation, platform dependent files may be installed in the
/usr/local/platsubtree while platform independent may be installed in/usr/local.Generally speaking, a platform is a combination of hardware and software families, e.g. Sparc machines running the Solaris 2.x operating system are considered the same platform, but Intel machines running Solaris 2.x are another platform, and Intel machines running Linux are yet another platform. Different major revisions of the same operating system generally also form different platforms. Non-Unix operating systems are a different story; the installation strategies on those systems are so different that the prefix and exec-prefix are meaningless, and set to the empty string. Note that compiled Python bytecode files are platform independent (but not independent from the Python version by which they were compiled!).
System administrators will know how to configure the mount or automount programs to share
/usr/localbetween platforms while having/usr/local/platbe a different filesystem for each platform.This function should not be called before
Py_Initialize(), otherwise it returnsNULL.バージョン 3.10 で変更: It now returns
NULLif called beforePy_Initialize().バージョン 3.13 で非推奨、バージョン 3.15 で削除予定: Use
PyConfig_Get("base_exec_prefix")(sys.base_exec_prefix) instead. UsePyConfig_Get("exec_prefix")(sys.exec_prefix) if virtual environments need to be handled.
-
wchar_t *Py_GetProgramFullPath()¶
- 次に属します: Stable ABI.
Return the full program name of the Python executable; this is computed as a side-effect of deriving the default module search path from the program name (set by
PyConfig.program_name). The returned string points into static storage; the caller should not modify its value. The value is available to Python code assys.executable.This function should not be called before
Py_Initialize(), otherwise it returnsNULL.バージョン 3.10 で変更: It now returns
NULLif called beforePy_Initialize().バージョン 3.13 で非推奨、バージョン 3.15 で削除予定: Use
PyConfig_Get("executable")(sys.executable) instead.
-
wchar_t *Py_GetPath()¶
- 次に属します: Stable ABI.
Return the default module search path; this is computed from the program name (set by
PyConfig.program_name) and some environment variables. The returned string consists of a series of directory names separated by a platform dependent delimiter character. The delimiter character is':'on Unix and macOS,';'on Windows. The returned string points into static storage; the caller should not modify its value. The listsys.pathis initialized with this value on interpreter startup; it can be (and usually is) modified later to change the search path for loading modules.This function should not be called before
Py_Initialize(), otherwise it returnsNULL.バージョン 3.10 で変更: It now returns
NULLif called beforePy_Initialize().バージョン 3.13 で非推奨、バージョン 3.15 で削除予定: Use
PyConfig_Get("module_search_paths")(sys.path) instead.
-
const char *Py_GetVersion()¶
- 次に属します: Stable ABI.
Python インタプリタのバージョンを返します。バージョンは、次のような形式の文字列です
"3.0a5+ (py3k:63103M, May 12 2008, 00:53:55) \n[GCC 4.2.3]"
第一ワード (最初のスペース文字まで) は、現在の Python のバージョンです; 最初の文字は、ピリオドで区切られたメジャーバージョンとマイナーバージョンです。関数が返す文字列ポインタは静的な記憶領域を返します; 関数の呼び出し側はこの値を変更できません。この値は Python コードからは
sys.versionとして利用できます。Py_Version定数も参照してください。
-
const char *Py_GetPlatform()¶
- 次に属します: Stable ABI.
現在のプラットフォームのプラットフォーム識別文字列を返します。Unixでは、オペレーティングシステムの "公式の" 名前を小文字に変換し、後ろにメジャーリビジョン番号を付けた構成になっています。例えば Solaris 2.x は、SunOS 5.x, としても知られていますが、
'sunos5'になります。macOS では'darwin'です。Windows では'win'です。関数が返す文字列ポインタは静的な記憶領域を返します; 関数の呼び出し側はこの値を変更できません。この値は Python コードからはsys.platformとして利用できます。
-
const char *Py_GetCopyright()¶
- 次に属します: Stable ABI.
現在の Python バージョンに対する公式の著作権表示文字列を返します。例えば
'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'関数が返す文字列ポインタは静的な記憶領域を返します; 関数の呼び出し側はこの値を変更できません。この値は Python コードからは
sys.copyrightとして利用できます。
-
const char *Py_GetCompiler()¶
- 次に属します: Stable ABI.
現在使っているバージョンの Python をビルドする際に用いたコンパイラを示す文字列を、角括弧で囲った文字列を返します。例えば:
"[GCC 2.7.2.2]"関数が返す文字列ポインタは静的な記憶領域を返します; 関数の呼び出し側はこの値を変更できません。この値は Python コードからは
sys.versionの一部として取り出せます。
-
const char *Py_GetBuildInfo()¶
- 次に属します: Stable ABI.
現在の Python インタープリタのビルド番号と、ビルドした日時の情報を返します。 例えば次のような値です。
"#67, Aug 1 1997, 22:34:28"関数が返す文字列ポインタは静的な記憶領域を返します; 関数の呼び出し側はこの値を変更できません。この値は Python コードからは
sys.versionの一部として取り出せます。
-
void PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath)¶
- 次に属します: Stable ABI.
この API は後方互換性のために残されています。 代わりに
PyConfig.argvとPyConfig.parse_argvとPyConfig.safe_pathを設定してください。 Python の初期化設定 を参照してください。argc および argv に基づいて
sys.argvを設定します。これらの引数はプログラムのmain()に渡した引数に似ていますが、最初の要素が Python インタプリタの宿主となっている実行形式の名前ではなく、実行されるスクリプト名を参照しなければならない点が違います。実行するスクリプトがない場合、 argv の最初の要素は空文字列にしてもかまいません。この関数がsys.argvの初期化に失敗した場合、致命的エラーをPy_FatalError()で知らせます。updatepath が 0 の場合、ここまでの動作がこの関数がすることの全てです。 updatepath が 0 でない場合、この関数は
sys.pathを以下のアルゴリズムに基づいて修正します:存在するスクリプトの名前が
argv[0]に渡された場合、そのスクリプトがある場所の絶対パスをsys.pathの先頭に追加します。それ以外の場合 (argc が
0だったり、argv[0]が存在するファイル名を指していない場合)、sys.pathの先頭に空の文字列を追加します。 これは現在の作業ディレクトリ (".") を先頭に追加するのと同じです。
バイト文字列をデコードして wchar_t* 文字列を取得するには、
Py_DecodeLocale()を使ってください。Python の初期化設定 の
PyConfig.orig_argvとPyConfig.argvメンバーも参照してください。注釈
単一のスクリプトを実行する以外の目的で Python インタープリタを組み込むアプリケーションでは、updatepath に
0を渡し、必要ならsys.pathを自分で更新することを推奨します。 CVE 2008-5983 を参照してください。3.1.3 より前のバージョンでは、
PySys_SetArgv()の呼び出しが完了した後にsys.pathの先頭の要素を取り出すことで、同じ効果が得られます。例えばこのように使います:PyRun_SimpleString("import sys; sys.path.pop(0)\n");
Added in version 3.1.3.
バージョン 3.11 で非推奨、バージョン 3.15 で削除予定.
-
void PySys_SetArgv(int argc, wchar_t **argv)¶
- 次に属します: Stable ABI.
この API は後方互換性のために残されています。 代わりに
PyConfig.argvとPyConfig.parse_argvを設定してください。 Python の初期化設定 を参照してください。この関数は、 python インタプリタが
-Iオプション付きで実行されている場合を除きPySys_SetArgvEx()の updatepath に1を設定したのと同じように動作します。バイト文字列をデコードして wchar_t* 文字列を取得するには、
Py_DecodeLocale()を使ってください。Python の初期化設定 の
PyConfig.orig_argvとPyConfig.argvメンバーも参照してください。バージョン 3.4 で変更: updatepath の値は
-Iオプションに依存します。バージョン 3.11 で非推奨、バージョン 3.15 で削除予定.
-
void Py_SetPythonHome(const wchar_t *home)¶
- 次に属します: Stable ABI.
この API は後方互換性のために残されています。 代わりに
PyConfig.homeを設定してください。 Python の初期化設定 を参照してください。Python の標準ライブラリがある、デフォルトの "home" ディレクトリを設定します。引数の文字列の意味については
PYTHONHOMEを参照してください。引数は静的なストレージに置かれてプログラム実行中に書き換えられないようなゼロ終端の文字列であるべきです。Python インタプリタはこのストレージの内容を変更しません。
バイト文字列をデコードして wchar_t* 文字列を取得するには、
Py_DecodeLocale()を使ってください。バージョン 3.11 で非推奨、バージョン 3.15 で削除予定.
-
wchar_t *Py_GetPythonHome()¶
- 次に属します: Stable ABI.
Return the default "home", that is, the value set by
PyConfig.home, or the value of thePYTHONHOMEenvironment variable if it is set.This function should not be called before
Py_Initialize(), otherwise it returnsNULL.バージョン 3.10 で変更: It now returns
NULLif called beforePy_Initialize().バージョン 3.13 で非推奨、バージョン 3.15 で削除予定: Use
PyConfig_Get("home")or thePYTHONHOMEenvironment variable instead.