char *name) |
['*']
に追加され、戻り値がモジュールを含む
トップレベルパッケージではなく名前つきモジュール (named module) に
なるようにします。
(残念ながらこのやり方には、name が実際にはサブモジュールでなく
サブパッケージを指定している場合、パッケージの
__all__
変数に指定されている
サブモジュールがロードされてしまうという副作用があります。)
import されたモジュールへの新たな参照を返します。失敗した
場合には例外をセットし、NULL を返します。 Python 2.4 以前では、
失敗した場合でもモジュールは生成されていることがあります --
sys.modules
を使って調べてください。 Python 2.4 以降では、 import に失敗した
モジュールは sys.modules
に残りません。
バージョン 2.4 で 変更 された仕様: import に失敗した場合、不完全なモジュールを除去するように なりました
char *name, PyObject *globals, PyObject *locals, PyObject *fromlist) |
戻り値は import されたモジュールかトップレベルパッケージへの新たな参照 になります。失敗した場合には例外をセットし、NULL を返します (Python 2.4 よりも前のバージョンでは、モジュールは生成されている場合が あります) __import__() と同じく、パッケージに対してサブモジュール を要求した場合の戻り値は通常、空でない fromlist を指定しない 限りトップレベルパッケージになります。 バージョン 2.4 で 変更 された仕様: import に失敗した場合、不完全なモジュールを除去するように なりました
PyObject *name) |
__builtins__
から __import__() 関数を呼び出します。
すなわち、現在の環境にインストールされている import フック、
例えば rexec や
ihooks を使って
import を行います。
PyObject *m) |
char *name) |
package.module
の形式でもかまいません。
まずモジュール辞書に該当するモジュールがあるかどうか調べ、
なければ新たなモジュールを生成してモジュール辞書に挿入します。
失敗した場合には例外をセットして NULL を返します。
注意:
この関数はモジュールの import やロードを行いません;
モジュールがまだロードされていなければ、空のモジュール
オブジェクトを得ることになります。
PyImport_ImportModule() やその別形式を使って
モジュールを import してください。ドット名表記で
指定したname が存在しない場合、パッケージ構造は
作成されません。
char *name, PyObject *co) |
package.module
形式でもかまいません) および
Python のバイトコードファイルや組み込み関数 compile()
で得られたコードオブジェクトを元にモジュールを
ロードします。
モジュールオブジェクトへの新たな参照を返します。失敗した
場合には例外をセットし、NULL を返します。Python 2.4 以前では、
失敗した場合でもモジュールは生成されていることがありました。
Python 2.4 以降では、たとえPyImport_ExecCodeModule() の処理に
入った時にname が sys.modules
に入っていたとしても、
import に失敗したモジュールは sys.modules
に残りません。
初期化の不完全なモジュールを sys.modules
に残すのは危険
であり、そのようなモジュールを import するコードにとっては、モジュール
の状態がわからない (モジュール作者の意図から外れた壊れた状態かもしれない)
からです。
この関数は、すでに import されているモジュールの場合には再ロードを 行います。意図的にモジュールの再ロードを行う方法は PyImport_ReloadModule() を参照してください。
name がpackage.module
形式のドット名表記で
あった場合、まだ作成されていないパッケージ構造はその作成されない
ままになります。
バージョン 2.4 で 変更 された仕様:
エラーが発生した場合にname をsys.modules
から除去するようになりました
) |
) |
sys.modules
)を返します。
この辞書はインタプリタごとに一つだけある変数なので注意してください。
) |
) |
) |
char *, char *) |
char *, char *) |
char *name) |
1
を、モジュールが見つからなかった場合には
0
を、初期化が失敗した場合には例外をセットして-1
を
返します。ロードに成功したモジュールにアクセスするには
PyImport_ImportModule() を使ってください。
(Note この関数名はいささか誤称めいています -- この関数は
すでに import 済みのモジュールをリロードしてしまいます。)
struct _frozen { char *name; unsigned char *code; int size; };
char *name, void (*initfunc)(void)) |
-1
を返します。
新たなモジュールは name で import でき、最初に import を
試みた際に呼び出される関数として initfunc を使います。
Py_Initialize() よりも前に呼び出さねばなりません。
struct _inittab { char *name; void (*initfunc)(void); };
struct _inittab *newtab) |
0
を、内部テーブルを拡張するのに十分なメモリを
確保できなかった場合には -1
を返します。操作が失敗した場合、
モジュールは一切内部テーブルに追加されません。
Py_Initialize() よりも前に呼び出さねばなりません。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。