Importando módulos¶
-
PyObject *PyImport_ImportModule(const char *name)¶
- Return value: New reference. Part of the 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)¶
- Return value: New reference. Part of the Stable ABI.
Esta función es un alias obsoleto de
PyImport_ImportModule()
.Distinto en la versión 3.3: Esta función solía fallar inmediatamente cuando el bloqueo de importación era retenido por otro hilo. Sin embargo, en Python 3.3, el esquema de bloqueo cambió a bloqueos por módulo para la mayoría de los propósitos, por lo que el comportamiento especial de esta función ya no es necesario.
-
PyObject *PyImport_ImportModuleEx(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)¶
- Return value: New reference.
Importa un módulo. Esto se describe mejor haciendo referencia a la función Python incorporada
__import__()
.El valor de retorno es una nueva referencia al módulo importado o paquete de nivel superior, o
NULL
con una excepción establecida en caso de error. Al igual que para__import__()
, el valor de retorno cuando se solicitó un submódulo de un paquete normalmente es el paquete de nivel superior, a menos que se proporcione un fromlist no vacío.Las importaciones que fallan eliminan objetos de módulo incompletos, como con
PyImport_ImportModule()
.
-
PyObject *PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)¶
- Return value: New reference. Part of the Stable ABI since version 3.7.
Importa un módulo. Esto se describe mejor haciendo referencia a la función Python incorporada
__import__()
, ya que la función estándar__import__()
llama a esta función directamente.El valor de retorno es una nueva referencia al módulo importado o paquete de nivel superior, o
NULL
con una excepción establecida en caso de error. Al igual que para__import__()
, el valor de retorno cuando se solicitó un submódulo de un paquete normalmente es el paquete de nivel superior, a menos que se proporcione un fromlist no vacío.Added in version 3.3.
-
PyObject *PyImport_ImportModuleLevel(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)¶
- Return value: New reference. Part of the Stable ABI.
Similar a
PyImport_ImportModuleLevelObject()
, pero el nombre es una cadena de caracteres codificada UTF-8 en lugar de un objeto Unicode.Distinto en la versión 3.3: Los valores negativos para level ya no se aceptan.
-
PyObject *PyImport_Import(PyObject *name)¶
- Return value: New reference. Part of the Stable ABI.
Esta es una interfaz de nivel superior que llama a la «función de enlace de importación» actual (con un nivel explícito de 0, que significa importación absoluta). Invoca la función
__import__()
de las__builtins__
de los globales (globals) actuales. Esto significa que la importación se realiza utilizando los ganchos de importación instalados en el entorno actual.Esta función siempre usa importaciones absolutas.
-
PyObject *PyImport_ReloadModule(PyObject *m)¶
- Return value: New reference. Part of the Stable ABI.
Recarga un módulo. Retorna una nueva referencia al módulo recargado, o
NULL
con una excepción establecida en caso de error (el módulo todavía existe en este caso).
-
PyObject *PyImport_AddModuleObject(PyObject *name)¶
- Return value: Borrowed reference. Part of the Stable ABI since version 3.7.
Retorna el objeto módulo correspondiente a un nombre de módulo. El argumento name puede tener la forma
package.module
. Primero revise el diccionario de módulos si hay uno allí, y si no, crea uno nuevo y lo agrega al diccionario de módulos. RetornaNULL
con una excepción establecida en caso de error.Nota
Esta función no carga ni importa el módulo; si el módulo no estaba cargado, obtendrá un objeto de módulo vacío. Utilice
PyImport_ImportModule()
o una de sus variantes para importar un módulo. Las estructuras de paquete implicadas por un nombre punteado para name no se crean si aún no están presentes.Added in version 3.3.
-
PyObject *PyImport_AddModule(const char *name)¶
- Return value: Borrowed reference. Part of the Stable ABI.
Similar a
PyImport_AddModuleObject()
, pero el nombre es una cadena de caracteres codificada UTF-8 en lugar de un objeto Unicode.
-
PyObject *PyImport_ExecCodeModule(const char *name, PyObject *co)¶
- Return value: New reference. Part of the 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.Esta función volverá a cargar el módulo si ya se importó. Consulte
PyImport_ReloadModule()
para conocer la forma prevista de volver a cargar un módulo.Si name apunta a un nombre punteado de la forma
package.module
, cualquier estructura de paquete que no se haya creado aún no se creará.Ver también
PyImport_ExecCodeModuleEx()
yPyImport_ExecCodeModuleWithPathnames()
.Distinto en la versión 3.12: The setting of
__cached__
and__loader__
is deprecated. SeeModuleSpec
for alternatives.
-
PyObject *PyImport_ExecCodeModuleEx(const char *name, PyObject *co, const char *pathname)¶
- Return value: New reference. Part of the Stable ABI.
Like
PyImport_ExecCodeModule()
, but the__file__
attribute of the module object is set to pathname if it is non-NULL
.Ver también
PyImport_ExecCodeModuleWithPathnames()
.
-
PyObject *PyImport_ExecCodeModuleObject(PyObject *name, PyObject *co, PyObject *pathname, PyObject *cpathname)¶
- Return value: New reference. Part of the Stable ABI since version 3.7.
Like
PyImport_ExecCodeModuleEx()
, but the__cached__
attribute of the module object is set to cpathname if it is non-NULL
. Of the three functions, this is the preferred one to use.Added in version 3.3.
Distinto en la versión 3.12: Setting
__cached__
is deprecated. SeeModuleSpec
for alternatives.
-
PyObject *PyImport_ExecCodeModuleWithPathnames(const char *name, PyObject *co, const char *pathname, const char *cpathname)¶
- Return value: New reference. Part of the Stable ABI.
Como
PyImport_ExecCodeModuleObject()
, pero name, pathname y cpathname son cadenas de caracteres codificadas UTF-8. También se intenta averiguar cuál debe ser el valor de pathname de cpathname si el primero se establece enNULL
.Added in version 3.2.
Distinto en la versión 3.3: Uses
imp.source_from_cache()
in calculating the source path if only the bytecode path is provided.Distinto en la versión 3.12: No longer uses the removed
imp
module.
-
long PyImport_GetMagicNumber()¶
- Part of the Stable ABI.
Retorna el número mágico para los archivos de bytecode de Python (también conocido como archivos
.pyc
). El número mágico debe estar presente en los primeros cuatro bytes del archivo de código de bytes, en orden de bytes little-endian. Retorna-1
en caso de error.Distinto en la versión 3.3: Retorna un valor de
-1
en caso de error.
-
const char *PyImport_GetMagicTag()¶
- Part of the Stable ABI.
Retorna la cadena de caracteres de etiqueta mágica para nombres de archivo de código de bytes Python en formato PEP 3147. Tenga en cuenta que el valor en
sys.implementation.cache_tag
es autoritario y debe usarse en lugar de esta función.Added in version 3.2.
-
PyObject *PyImport_GetModuleDict()¶
- Return value: Borrowed reference. Part of the Stable ABI.
Retorna el diccionario utilizado para la administración del módulo (también conocido como
sys.modules
). Tenga en cuenta que esta es una variable por intérprete.
-
PyObject *PyImport_GetModule(PyObject *name)¶
- Return value: New reference. Part of the Stable ABI since version 3.8.
Retorna el módulo ya importado con el nombre dado. Si el módulo aún no se ha importado, retorna
NULL
pero no establece un error. RetornaNULL
y establece un error si falla la búsqueda.Added in version 3.7.
-
PyObject *PyImport_GetImporter(PyObject *path)¶
- Return value: New reference. Part of the 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)¶
- Part of the Stable ABI since version 3.7.
Carga un módulo congelado llamado name. Retorna
1
para el éxito,0
si no se encuentra el módulo y-1
con una excepción establecida si falla la inicialización. Para acceder al módulo importado con una carga exitosa, usePyImport_ImportModule()
. (Tenga en cuenta el nombre inapropiado — esta función volvería a cargar el módulo si ya se importó).Added in version 3.3.
Distinto en la versión 3.4: El atributo
__file__
ya no está establecido en el módulo.
-
int PyImport_ImportFrozenModule(const char *name)¶
- Part of the Stable ABI.
Similar a
PyImport_ImportFrozenModuleObject()
, pero el nombre es una cadena de caracteres codificada UTF-8 en lugar de un objeto Unicode.
-
struct _frozen¶
Esta es la definición del tipo de estructura para los descriptores de módulos congelados, según lo generado con la herramienta freeze (ver
Tools/freeze
en la distribución de código fuente de Python). Su definición, que se encuentra enInclude/import.h
, es:struct _frozen { const char *name; const unsigned char *code; int size; bool is_package; };
Distinto en la versión 3.11: El nuevo campo
is_package
indica si el módulo es un paquete o no. Esto sustituye a la configuración del camposize
con un valor negativo.
-
const struct _frozen *PyImport_FrozenModules¶
Este puntero se inicializa para apuntar a un arreglo de registros
_frozen
, terminado por uno cuyos registros son todosNULL
o cero. Cuando se importa un módulo congelado, se busca en esta tabla. El código de terceros podría jugar con esto para proporcionar una colección de módulos congelados creada dinámicamente.
-
int PyImport_AppendInittab(const char *name, PyObject *(*initfunc)(void))¶
- Part of the Stable ABI.
Agrega un solo módulo a la tabla existente de módulos incorporados. Este es un contenedor conveniente
PyImport_ExtendInittab()
, que retorna-1
si la tabla no se puede extender. El nuevo módulo se puede importar con el nombre name, y utiliza la función initfunc como la función de inicialización llamada en el primer intento de importación. Esto debería llamarse antes dePy_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()
.Si Python es inicializado múltiples veces, se debe llamar
PyImport_AppendInittab()
oPyImport_ExtendInittab()
antes de cada inicialización de Python.