モジュールのインポート¶
-
PyObject *PyImport_ImportModule(const char *name)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
This is a wrapper around
PyImport_Import()
which takes a const char* as an argument instead of a PyObject*.
-
PyObject *PyImport_ImportModuleNoBlock(const char *name)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
この関数は、
PyImport_ImportModule()
の廃止予定のエイリアスです。バージョン 3.3 で変更: この関数は、従来は別のスレッドによってインポートロックが行われていた場合は即座に失敗していました。しかし Python 3.3 では、大部分の目的でロックスキームがモジュールごとのロックに移行したので、この関数の特別な振る舞いはもはや必要ではありません。
-
PyObject *PyImport_ImportModuleEx(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)¶
- 戻り値: 新しい参照。
モジュールをインポートします。モジュールのインポートについては組み込みの Python 関数
__import__()
を読むとよくわかります。戻り値は、インポートされたモジュールかトップレベルパッケージへの新しい参照か、失敗した場合は例外を設定して
NULL
を返します。__import__()
と同じように、パッケージのサブモジュールが要求されたときは、空でない fromlist を渡された時以外は、トップレベルのパッケージを返します。インポートが失敗した場合は、
PyImport_ImportModule()
と同様に不完全なモジュールのオブジェクトを削除します。
-
PyObject *PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI (バージョン 3.7 より).
モジュールをインポートします。モジュールのインポートについては組み込みの Python 関数
__import__()
を読むとよく分かります。というのも、標準の__import__()
はこの関数を直接呼び出しているからです。戻り値は、インポートされたモジュールかトップレベルパッケージへの新しい参照か、失敗した場合は例外を設定して
NULL
を返します。__import__()
と同じように、パッケージのサブモジュールが要求されたときは、空でない fromlist を渡された時以外は、トップレベルのパッケージを返します。バージョン 3.3 で追加.
-
PyObject *PyImport_ImportModuleLevel(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
PyImport_ImportModuleLevelObject()
と似ていますが、name が Unicode オブジェクトではなく UTF-8 でエンコードされた文字列である点で異なります。バージョン 3.3 で変更: level にはもはや負の値は使用できません。
-
PyObject *PyImport_Import(PyObject *name)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
現在の "インポートフック関数" を呼び出すための高水準のインターフェースです (level に 0 を明示すると、絶対インポートを意味します)。 この関数は現在のグローバル変数辞書内の
__builtins__
から__import__()
関数を呼び出します。すなわち、現在の環境にインストールされているインポートフック使ってインポートを行います。この関数は常に絶対インポートを使用します。
-
PyObject *PyImport_ReloadModule(PyObject *m)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
モジュールを再ロード (reload) します。戻り値は再ロードしたモジュールかトップレベルパッケージへの新たな参照になります。 失敗した場合には例外をセットし、
NULL
を返します (その場合でも、モジュールは生成されている場合があります)。
-
PyObject *PyImport_AddModuleObject(PyObject *name)¶
- 戻り値: 借用参照。 次に属します: Stable ABI (バージョン 3.7 より).
Return the module object corresponding to a module name. The name argument may be of the form
package.module
. First check the modules dictionary if there's one there, and if not, create a new one and insert it in the modules dictionary. ReturnNULL
with an exception set on failure.注釈
This function does not load or import the module; if the module wasn't already loaded, you will get an empty module object. Use
PyImport_ImportModule()
or one of its variants to import a module. Package structures implied by a dotted name for name are not created if not already present.バージョン 3.3 で追加.
-
PyObject *PyImport_AddModule(const char *name)¶
- 戻り値: 借用参照。 次に属します: Stable ABI.
Similar to
PyImport_AddModuleObject()
, but the name is a UTF-8 encoded string instead of a Unicode object.
-
PyObject *PyImport_ExecCodeModule(const char *name, PyObject *co)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
Given a module name (possibly of the form
package.module
) and a code object read from a Python bytecode file or obtained from the built-in functioncompile()
, load the module. Return a new reference to the module object, orNULL
with an exception set if an error occurred. name is removed fromsys.modules
in error cases, even if name was already insys.modules
on entry toPyImport_ExecCodeModule()
. Leaving incompletely initialized modules insys.modules
is dangerous, as imports of such modules have no way to know that the module object is an unknown (and probably damaged with respect to the module author's intents) state.The module's
__spec__
and__loader__
will be set, if not set already, with the appropriate values. The spec's loader will be set to the module's__loader__
(if set) and to an instance ofSourceFileLoader
otherwise.The module's
__file__
attribute will be set to the code object'sco_filename
. If applicable,__cached__
will also be set.この関数は、すでにインポートされているモジュールの場合には再ロードを行います。意図的にモジュールの再ロードを行う方法は
PyImport_ReloadModule()
を参照してください。name が
package.module
形式のドット名表記であった場合、まだ作成されていないパッケージ構造はその作成されないままになります。PyImport_ExecCodeModuleEx()
とPyImport_ExecCodeModuleWithPathnames()
も参照してください。
-
PyObject *PyImport_ExecCodeModuleEx(const char *name, PyObject *co, const char *pathname)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
PyImport_ExecCodeModule()
と似ていますが、pathname がNULL
でない場合にモジュールオブジェクトの__file__
属性に pathname が設定される点が異なります。PyImport_ExecCodeModuleWithPathnames()
も参照してください。
-
PyObject *PyImport_ExecCodeModuleObject(PyObject *name, PyObject *co, PyObject *pathname, PyObject *cpathname)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI (バージョン 3.7 より).
PyImport_ExecCodeModuleEx()
と似ていますが、cpathname がNULL
でない場合にモジュールオブジェクトの__cached__
属性に cpathname が設定される点が異なります。これらの 3 つの関数のうち、この関数の使用が望ましいです。バージョン 3.3 で追加.
-
PyObject *PyImport_ExecCodeModuleWithPathnames(const char *name, PyObject *co, const char *pathname, const char *cpathname)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
PyImport_ExecCodeModuleObject()
と似ていますが、 name と pathname、 cpathname が UTF-8 でエンコードされた文字列である点が異なります。もし pathname がNULL
の場合、cpathname から、pathname どのような値になるべきかを知る試みもなされます。バージョン 3.2 で追加.
バージョン 3.3 で変更: Uses
imp.source_from_cache()
in calculating the source path if only the bytecode path is provided.
-
long PyImport_GetMagicNumber()¶
- 次に属します: Stable ABI.
Python バイトコードファイル (別名
.pyc
ファイル) のマジックナンバーを返します。マジックナンバーはバイトコードファイルの最初の4バイトに、リトルエンディアンバイトオーダーで現れるべきです。エラーの場合は-1
を返します。バージョン 3.3 で変更: 失敗した場合は
-1
の値を返します。
-
const char *PyImport_GetMagicTag()¶
- 次に属します: Stable ABI.
マジックタグ文字列を Python バイトコードファイル名の PEP 3147 フォーマットで返します。
sys.implementation.cache_tag
の値が信頼でき、かつこの関数の代わりに使用すべきであることを肝に命じましょう。バージョン 3.2 で追加.
-
PyObject *PyImport_GetModuleDict()¶
- 戻り値: 借用参照。 次に属します: Stable ABI.
モジュール管理のための辞書 (いわゆる
sys.modules
)を返します。この辞書はインタプリタごとに一つだけある変数なので注意してください。
-
PyObject *PyImport_GetModule(PyObject *name)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI (バージョン 3.8 より).
与えられた名前の既にインポート済みのモジュールを返します。 モジュールがインポートされていなかった場合は、
NULL
を返しますが、エラーはセットしません。 モジュールの検索に失敗した場合は、NULL
を返し、エラーをセットします。バージョン 3.7 で追加.
-
PyObject *PyImport_GetImporter(PyObject *path)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
Return a finder object for a
sys.path
/pkg.__path__
item path, possibly by fetching it from thesys.path_importer_cache
dict. If it wasn't yet cached, traversesys.path_hooks
until a hook is found that can handle the path item. ReturnNone
if no hook could; this tells our caller that the path based finder could not find a finder for this path item. Cache the result insys.path_importer_cache
. Return a new reference to the finder object.
-
int PyImport_ImportFrozenModuleObject(PyObject *name)¶
- 次に属します: Stable ABI (バージョン 3.7 より).
name という名前のフリーズ (freeze) されたモジュールをロードします。成功すると
1
を、モジュールが見つからなかった場合には0
を、初期化が失敗した場合には例外をセットして-1
を返します。ロードに成功したモジュールにアクセスするにはPyImport_ImportModule()
を使ってください。 (Note この関数はいささか誤解を招く名前です --- この関数はモジュールがすでにインポートされていたらリロードしてしまいます。)バージョン 3.3 で追加.
バージョン 3.4 で変更:
__file__
属性はもうモジュールにセットされません。
-
int PyImport_ImportFrozenModule(const char *name)¶
- 次に属します: Stable ABI.
PyImport_ImportFrozenModuleObject()
と似ていますが、name は UTF-8 でエンコードされた文字列の代わりに、 Unicode オブジェクトを使用する点が異なります。
-
struct _frozen¶
freeze ユーティリティが生成するようなフリーズ化モジュールデスクリプタの構造体型定義です。 (Python ソース配布物の
Tools/freeze/
を参照してください) この構造体の定義はInclude/import.h
にあり、以下のようになっています:struct _frozen { const char *name; const unsigned char *code; int size; bool is_package; };
バージョン 3.11 で変更: The new
is_package
field indicates whether the module is a package or not. This replaces setting thesize
field to a negative value.
-
const struct _frozen *PyImport_FrozenModules¶
このポインタは
_frozen
のレコードからなり、終端の要素のメンバがNULL
かゼロになっているような配列を指すよう初期化されます。 フリーズされたモジュールをインポートするとき、このテーブルを検索します。 サードパーティ製のコードからこのポインタに仕掛けを講じて、動的に生成されたフリーズ化モジュールの集合を提供するようにできます。
-
int PyImport_AppendInittab(const char *name, PyObject *(*initfunc)(void))¶
- 次に属します: Stable ABI.
既存の組み込みモジュールテーブルに単一のモジュールを追加します。この関数は利便性を目的とした
PyImport_ExtendInittab()
のラッパー関数で、テーブルが拡張できないときには-1
を返します。新たなモジュールは name でインポートでき、最初にインポートを試みた際に呼び出される関数として initfunc を使います。Py_Initialize()
よりも前に呼び出さなければなりません。
-
struct _inittab¶
Structure describing a single entry in the list of built-in modules. Programs which embed Python may use an array of these structures in conjunction with
PyImport_ExtendInittab()
to provide additional built-in modules. The structure consists of two members:-
const char *name¶
The module name, as an ASCII encoded string.
-
const char *name¶
-
int PyImport_ExtendInittab(struct _inittab *newtab)¶
Add a collection of modules to the table of built-in modules. The newtab array must end with a sentinel entry which contains
NULL
for thename
field; failure to provide the sentinel value can result in a memory fault. Returns0
on success or-1
if insufficient memory could be allocated to extend the internal table. In the event of failure, no modules are added to the internal table. This must be called beforePy_Initialize()
.Python が複数回初期化される場合、
PyImport_AppendInittab()
またはPyImport_ExtendInittab()
は、それぞれの初期化の前に呼び出される必要があります。