mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00

svn+ssh://pythondev@svn.python.org/python/trunk ........ r79307 | florent.xicluna | 2010-03-22 17:45:50 -0500 (Mon, 22 Mar 2010) | 2 lines #7667: Fix doctest failures with non-ASCII paths. ........ r79408 | victor.stinner | 2010-03-24 20:18:38 -0500 (Wed, 24 Mar 2010) | 2 lines Fix a gcc warning introduced by r79397. ........ r79430 | brian.curtin | 2010-03-25 18:48:54 -0500 (Thu, 25 Mar 2010) | 2 lines Fix #6538. Markup RegexObject and MatchObject as classes. Patch by Ryan Arana. ........ r79533 | barry.warsaw | 2010-03-31 16:07:16 -0500 (Wed, 31 Mar 2010) | 6 lines - Issue #8233: When run as a script, py_compile.py optionally takes a single argument `-` which tells it to read files to compile from stdin. Each line is read on demand and the named file is compiled immediately. (Original patch by Piotr O?\197?\188arowski). ........ r79542 | r.david.murray | 2010-03-31 20:28:39 -0500 (Wed, 31 Mar 2010) | 3 lines A couple small grammar fixes in test.rst, and rewrite the check_warnings docs to be clearer. ........ r79579 | georg.brandl | 2010-04-02 03:34:41 -0500 (Fri, 02 Apr 2010) | 1 line Add 2.6.5. ........ r79580 | georg.brandl | 2010-04-02 03:39:09 -0500 (Fri, 02 Apr 2010) | 1 line #2768: add a note on how to get a file descriptor. ........ r79585 | georg.brandl | 2010-04-02 04:03:18 -0500 (Fri, 02 Apr 2010) | 1 line Remove col-spanning cells in logging docs. ........ r79586 | georg.brandl | 2010-04-02 04:07:42 -0500 (Fri, 02 Apr 2010) | 1 line Document PyImport_ExecCodeModuleEx(). ........ r79587 | georg.brandl | 2010-04-02 04:11:49 -0500 (Fri, 02 Apr 2010) | 1 line #8012: clarification in generator glossary entry. ........ r79607 | andrew.kuchling | 2010-04-02 12:48:23 -0500 (Fri, 02 Apr 2010) | 1 line #6647: document that catch_warnings is not thread-safe ........ r79608 | andrew.kuchling | 2010-04-02 12:54:26 -0500 (Fri, 02 Apr 2010) | 1 line #6647: add note to two examples ........ r79622 | tarek.ziade | 2010-04-02 16:34:19 -0500 (Fri, 02 Apr 2010) | 1 line removed documentation on code that was reverted and pushed into distutils2 ........ r79717 | antoine.pitrou | 2010-04-03 16:22:38 -0500 (Sat, 03 Apr 2010) | 4 lines Fix wording / typography, and a slightly misleading statement (memoryviews don't support complex structures right now) ........ r79820 | benjamin.peterson | 2010-04-05 22:34:09 -0500 (Mon, 05 Apr 2010) | 1 line ready _sre types ........ r79822 | georg.brandl | 2010-04-06 03:18:15 -0500 (Tue, 06 Apr 2010) | 1 line #8320: document return value of recv_into(). ........ r79828 | georg.brandl | 2010-04-06 09:33:44 -0500 (Tue, 06 Apr 2010) | 1 line Add JP. ........ r79862 | georg.brandl | 2010-04-06 15:27:59 -0500 (Tue, 06 Apr 2010) | 1 line Fix syntax. ........ r79875 | mark.dickinson | 2010-04-06 17:18:23 -0500 (Tue, 06 Apr 2010) | 1 line More NaN consistency doc fixes. ........ r79923 | georg.brandl | 2010-04-10 06:15:24 -0500 (Sat, 10 Apr 2010) | 1 line #8360: skipTest was added in 2.7. ........ r79924 | georg.brandl | 2010-04-10 06:16:59 -0500 (Sat, 10 Apr 2010) | 1 line #8346: update version. ........ r79941 | andrew.kuchling | 2010-04-10 20:39:36 -0500 (Sat, 10 Apr 2010) | 1 line Two grammar fixes ........ r79942 | andrew.kuchling | 2010-04-10 20:40:06 -0500 (Sat, 10 Apr 2010) | 1 line Punctuation fix ........ r79943 | andrew.kuchling | 2010-04-10 20:40:30 -0500 (Sat, 10 Apr 2010) | 1 line Add various items ........ r79945 | andrew.kuchling | 2010-04-10 20:40:49 -0500 (Sat, 10 Apr 2010) | 1 line name correct ........ r79947 | andrew.kuchling | 2010-04-10 20:44:13 -0500 (Sat, 10 Apr 2010) | 1 line Remove distutils section ........ r79951 | andrew.kuchling | 2010-04-11 07:48:08 -0500 (Sun, 11 Apr 2010) | 1 line Two typo fixes ........ r79952 | andrew.kuchling | 2010-04-11 07:49:37 -0500 (Sun, 11 Apr 2010) | 1 line Add two items ........
248 lines
10 KiB
ReStructuredText
248 lines
10 KiB
ReStructuredText
.. highlightlang:: c
|
|
|
|
.. _importing:
|
|
|
|
Importing Modules
|
|
=================
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_ImportModule(const char *name)
|
|
|
|
.. index::
|
|
single: package variable; __all__
|
|
single: __all__ (package variable)
|
|
single: modules (in module sys)
|
|
|
|
This is a simplified interface to :cfunc:`PyImport_ImportModuleEx` below,
|
|
leaving the *globals* and *locals* arguments set to *NULL* and *level* set
|
|
to 0. When the *name*
|
|
argument contains a dot (when it specifies a submodule of a package), the
|
|
*fromlist* argument is set to the list ``['*']`` so that the return value is the
|
|
named module rather than the top-level package containing it as would otherwise
|
|
be the case. (Unfortunately, this has an additional side effect when *name* in
|
|
fact specifies a subpackage instead of a submodule: the submodules specified in
|
|
the package's ``__all__`` variable are loaded.) Return a new reference to the
|
|
imported module, or *NULL* with an exception set on failure. A failing
|
|
import of a module doesn't leave the module in :data:`sys.modules`.
|
|
|
|
This function always uses absolute imports.
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_ImportModuleNoBlock(const char *name)
|
|
|
|
This version of :cfunc:`PyImport_ImportModule` does not block. It's intended
|
|
to be used in C functions that import other modules to execute a function.
|
|
The import may block if another thread holds the import lock. The function
|
|
:cfunc:`PyImport_ImportModuleNoBlock` never blocks. It first tries to fetch
|
|
the module from sys.modules and falls back to :cfunc:`PyImport_ImportModule`
|
|
unless the lock is held, in which case the function will raise an
|
|
:exc:`ImportError`.
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_ImportModuleEx(char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)
|
|
|
|
.. index:: builtin: __import__
|
|
|
|
Import a module. This is best described by referring to the built-in Python
|
|
function :func:`__import__`, as the standard :func:`__import__` function calls
|
|
this function directly.
|
|
|
|
The return value is a new reference to the imported module or top-level
|
|
package, or *NULL* with an exception set on failure. Like for
|
|
:func:`__import__`, the return value when a submodule of a package was
|
|
requested is normally the top-level package, unless a non-empty *fromlist*
|
|
was given.
|
|
|
|
Failing imports remove incomplete module objects, like with
|
|
:cfunc:`PyImport_ImportModule`.
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_ImportModuleLevel(char *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)
|
|
|
|
Import a module. This is best described by referring to the built-in Python
|
|
function :func:`__import__`, as the standard :func:`__import__` function calls
|
|
this function directly.
|
|
|
|
The return value is a new reference to the imported module or top-level package,
|
|
or *NULL* with an exception set on failure. Like for :func:`__import__`,
|
|
the return value when a submodule of a package was requested is normally the
|
|
top-level package, unless a non-empty *fromlist* was given.
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_Import(PyObject *name)
|
|
|
|
This is a higher-level interface that calls the current "import hook
|
|
function" (with an explicit *level* of 0, meaning absolute import). It
|
|
invokes the :func:`__import__` function from the ``__builtins__`` of the
|
|
current globals. This means that the import is done using whatever import
|
|
hooks are installed in the current environment.
|
|
|
|
This function always uses absolute imports.
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_ReloadModule(PyObject *m)
|
|
|
|
Reload a module. Return a new reference to the reloaded module, or *NULL* with
|
|
an exception set on failure (the module still exists in this case).
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_AddModule(const char *name)
|
|
|
|
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. Return *NULL* with an exception set on failure.
|
|
|
|
.. note::
|
|
|
|
This function does not load or import the module; if the module wasn't already
|
|
loaded, you will get an empty module object. Use :cfunc:`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.
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_ExecCodeModule(char *name, PyObject *co)
|
|
|
|
.. index:: builtin: compile
|
|
|
|
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 function
|
|
:func:`compile`, load the module. Return a new reference to the module object,
|
|
or *NULL* with an exception set if an error occurred. *name*
|
|
is removed from :attr:`sys.modules` in error cases, even if *name* was already
|
|
in :attr:`sys.modules` on entry to :cfunc:`PyImport_ExecCodeModule`. Leaving
|
|
incompletely initialized modules in :attr:`sys.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 :attr:`__file__` attribute will be set to the code object's
|
|
:cmember:`co_filename`.
|
|
|
|
This function will reload the module if it was already imported. See
|
|
:cfunc:`PyImport_ReloadModule` for the intended way to reload a module.
|
|
|
|
If *name* points to a dotted name of the form ``package.module``, any package
|
|
structures not already created will still not be created.
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_ExecCodeModuleEx(char *name, PyObject *co, char *pathname)
|
|
|
|
Like :cfunc:`PyImport_ExecCodeModule`, but the :attr:`__file__` attribute of
|
|
the module object is set to *pathname* if it is non-``NULL``.
|
|
|
|
|
|
.. cfunction:: long PyImport_GetMagicNumber()
|
|
|
|
Return the magic number for Python bytecode files (a.k.a. :file:`.pyc` and
|
|
:file:`.pyo` files). The magic number should be present in the first four bytes
|
|
of the bytecode file, in little-endian byte order.
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_GetModuleDict()
|
|
|
|
Return the dictionary used for the module administration (a.k.a.
|
|
``sys.modules``). Note that this is a per-interpreter variable.
|
|
|
|
|
|
.. cfunction:: PyObject* PyImport_GetImporter(PyObject *path)
|
|
|
|
Return an importer object for a :data:`sys.path`/:attr:`pkg.__path__` item
|
|
*path*, possibly by fetching it from the :data:`sys.path_importer_cache`
|
|
dict. If it wasn't yet cached, traverse :data:`sys.path_hooks` until a hook
|
|
is found that can handle the path item. Return ``None`` if no hook could;
|
|
this tells our caller it should fall back to the built-in import mechanism.
|
|
Cache the result in :data:`sys.path_importer_cache`. Return a new reference
|
|
to the importer object.
|
|
|
|
|
|
.. cfunction:: void _PyImport_Init()
|
|
|
|
Initialize the import mechanism. For internal use only.
|
|
|
|
|
|
.. cfunction:: void PyImport_Cleanup()
|
|
|
|
Empty the module table. For internal use only.
|
|
|
|
|
|
.. cfunction:: void _PyImport_Fini()
|
|
|
|
Finalize the import mechanism. For internal use only.
|
|
|
|
|
|
.. cfunction:: PyObject* _PyImport_FindExtension(char *, char *)
|
|
|
|
For internal use only.
|
|
|
|
|
|
.. cfunction:: PyObject* _PyImport_FixupExtension(char *, char *)
|
|
|
|
For internal use only.
|
|
|
|
|
|
.. cfunction:: int PyImport_ImportFrozenModule(char *name)
|
|
|
|
Load a frozen module named *name*. Return ``1`` for success, ``0`` if the
|
|
module is not found, and ``-1`` with an exception set if the initialization
|
|
failed. To access the imported module on a successful load, use
|
|
:cfunc:`PyImport_ImportModule`. (Note the misnomer --- this function would
|
|
reload the module if it was already imported.)
|
|
|
|
|
|
.. ctype:: struct _frozen
|
|
|
|
.. index:: single: freeze utility
|
|
|
|
This is the structure type definition for frozen module descriptors, as
|
|
generated by the :program:`freeze` utility (see :file:`Tools/freeze/` in the
|
|
Python source distribution). Its definition, found in :file:`Include/import.h`,
|
|
is::
|
|
|
|
struct _frozen {
|
|
char *name;
|
|
unsigned char *code;
|
|
int size;
|
|
};
|
|
|
|
|
|
.. cvar:: struct _frozen* PyImport_FrozenModules
|
|
|
|
This pointer is initialized to point to an array of :ctype:`struct _frozen`
|
|
records, terminated by one whose members are all *NULL* or zero. When a frozen
|
|
module is imported, it is searched in this table. Third-party code could play
|
|
tricks with this to provide a dynamically created collection of frozen modules.
|
|
|
|
|
|
.. cfunction:: int PyImport_AppendInittab(const char *name, PyObject* (*initfunc)(void))
|
|
|
|
Add a single module to the existing table of built-in modules. This is a
|
|
convenience wrapper around :cfunc:`PyImport_ExtendInittab`, returning ``-1`` if
|
|
the table could not be extended. The new module can be imported by the name
|
|
*name*, and uses the function *initfunc* as the initialization function called
|
|
on the first attempted import. This should be called before
|
|
:cfunc:`Py_Initialize`.
|
|
|
|
|
|
.. ctype:: struct _inittab
|
|
|
|
Structure describing a single entry in the list of built-in modules. Each of
|
|
these structures gives the name and initialization function for a module built
|
|
into the interpreter. Programs which embed Python may use an array of these
|
|
structures in conjunction with :cfunc:`PyImport_ExtendInittab` to provide
|
|
additional built-in modules. The structure is defined in
|
|
:file:`Include/import.h` as::
|
|
|
|
struct _inittab {
|
|
char *name;
|
|
PyObject* (*initfunc)(void);
|
|
};
|
|
|
|
|
|
.. cfunction:: 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 the :attr:`name`
|
|
field; failure to provide the sentinel value can result in a memory fault.
|
|
Returns ``0`` 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 should be called before :cfunc:`Py_Initialize`.
|