Імпорт модулів¶
-
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.
Ця функція є застарілим псевдонімом
PyImport_ImportModule()
.Змінено в версії 3.3: Раніше ця функція відразу виходила з ладу, коли блокування імпорту утримувалося іншим потоком. Однак у Python 3.3 схема блокування перейшла на блокування по модулю для більшості цілей, тому особлива поведінка цієї функції більше не потрібна.
-
PyObject *PyImport_ImportModuleEx(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)¶
- Return value: New reference.
Імпортувати модуль. Найкраще це можна описати, звернувшись до вбудованої функції Python
__import__()
.Значення, що повертається, є новим посиланням на імпортований модуль або пакет верхнього рівня, або
NULL
з винятком, встановленим у разі помилки. Як і для__import__()
, значення, що повертається, коли запитується підмодуль пакету, зазвичай є пакетом верхнього рівня, якщо не було надано непорожній fromlist.Невдалий імпорт видаляє неповні об’єкти модуля, як-от
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.
Імпортувати модуль. Найкраще це можна описати, звернувшись до вбудованої функції Python
__import__()
, оскільки стандартна функція__import__()
викликає цю функцію безпосередньо.Значення, що повертається, є новим посиланням на імпортований модуль або пакет верхнього рівня, або
NULL
з винятком, встановленим у разі помилки. Як і для__import__()
, значення, що повертається, коли запитується підмодуль пакету, зазвичай є пакетом верхнього рівня, якщо не було надано непорожній fromlist.Нове в версії 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.
Подібно до
PyImport_ImportModuleLevelObject()
, але ім’я є рядком у кодуванні UTF-8 замість об’єкта Unicode.Змінено в версії 3.3: Від’ємні значення для рівня більше не приймаються.
-
PyObject *PyImport_Import(PyObject *name)¶
- Return value: New reference. Part of the Stable ABI.
Це інтерфейс вищого рівня, який викликає поточну «функцію перехоплення імпорту» (з явним рівнем 0, що означає абсолютний імпорт). Він викликає функцію
__import__()
з__builtins__
поточних глобалів. Це означає, що імпорт виконується за допомогою будь-яких хуків імпорту, встановлених у поточному середовищі.Ця функція завжди використовує абсолютний імпорт.
-
PyObject *PyImport_ReloadModule(PyObject *m)¶
- Return value: New reference. Part of the Stable ABI.
Перезавантажте модуль. Повертає нове посилання на перезавантажений модуль або
NULL
з винятком, встановленим у разі помилки (у цьому випадку модуль все ще існує).
-
PyObject *PyImport_AddModuleObject(PyObject *name)¶
- Return value: Borrowed reference. Part of the Stable ABI since version 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)¶
- Return value: Borrowed reference. Part of the 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)¶
- 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.Ця функція перезавантажить модуль, якщо він уже був імпортований. Перегляньте
PyImport_ReloadModule()
для передбачуваного способу перезавантаження модуля.Якщо name вказує на ім’я з крапками у формі
package.module
, будь-які ще не створені структури пакунків не будуть створені.Дивіться також
PyImport_ExecCodeModuleEx()
іPyImport_ExecCodeModuleWithPathnames()
.
-
PyObject *PyImport_ExecCodeModuleEx(const char *name, PyObject *co, const char *pathname)¶
- Return value: New reference. Part of the Stable ABI.
Подібно до
PyImport_ExecCodeModule()
, але атрибут__file__
об’єкта модуля встановлюється на pathname, якщо він не єNULL
.Дивіться також
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.
Подібно до
PyImport_ExecCodeModuleEx()
, але атрибут__cached__
об’єкта модуля встановлюється на cpathname, якщо він неNULL
. З усіх трьох функцій найкраще використовувати цю.Нове в версії 3.3.
-
PyObject *PyImport_ExecCodeModuleWithPathnames(const char *name, PyObject *co, const char *pathname, const char *cpathname)¶
- Return value: New reference. Part of the Stable ABI.
Як
PyImport_ExecCodeModuleObject()
, але name, pathname і cpathname є рядками в кодуванні UTF-8. Також робляться спроби з’ясувати, яким має бути значення pathname від cpathname, якщо для першого встановлено значенняNULL
.Нове в версії 3.2.
Змінено в версії 3.3: Uses
imp.source_from_cache()
in calculating the source path if only the bytecode path is provided.
-
long PyImport_GetMagicNumber()¶
- Part of the Stable ABI.
Повертає магічне число для файлів байт-коду Python (він же файл
.pyc
). Магічне число має бути присутнім у перших чотирьох байтах файлу байт-коду в порядку байтів у порядку байтів. Повертає-1
у разі помилки.Змінено в версії 3.3: Повертає значення «-1» у разі помилки.
-
const char *PyImport_GetMagicTag()¶
- Part of the Stable ABI.
Повертає рядок чарівного тегу для імен файлів байт-коду Python у форматі PEP 3147. Майте на увазі, що значення в
sys.implementation.cache_tag
є авторитетним і має використовуватися замість цієї функції.Нове в версії 3.2.
-
PyObject *PyImport_GetModuleDict()¶
- Return value: Borrowed reference. Part of the Stable ABI.
Повертає словник, який використовується для адміністрування модуля (він же
sys.modules
). Зверніть увагу, що це змінна для кожного інтерпретатора.
-
PyObject *PyImport_GetModule(PyObject *name)¶
- Return value: New reference. Part of the Stable ABI since version 3.8.
Повернути вже імпортований модуль із вказаною назвою. Якщо модуль ще не було імпортовано, повертає
NULL
, але не встановлює помилку. ПовертаєNULL
і встановлює помилку, якщо пошук не вдався.Нове в версії 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.
Завантажте заморожений модуль під назвою name. Повертає
1
для успіху,0
, якщо модуль не знайдено,-1
із встановленим винятком, якщо ініціалізація не вдалася. Щоб отримати доступ до імпортованого модуля після успішного завантаження, використовуйтеPyImport_ImportModule()
. (Зверніть увагу на неправильну назву — ця функція перезавантажить модуль, якщо його вже було імпортовано.)Нове в версії 3.3.
Змінено в версії 3.4: Атрибут
__file__
більше не встановлено в модулі.
-
int PyImport_ImportFrozenModule(const char *name)¶
- Part of the Stable ABI.
Подібно до
PyImport_ImportFrozenModuleObject()
, але ім’я є рядком у кодуванні UTF-8 замість об’єкта Unicode.
-
struct _frozen¶
Це визначення типу структури для закріплених дескрипторів модулів, створених утилітою freeze (див.
Tools/freeze/
у вихідному коді Python). Його визначення, знайдене в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¶
This pointer is initialized to point to an array of
_frozen
records, terminated by one whose members are allNULL
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.
-
int PyImport_AppendInittab(const char *name, PyObject *(*initfunc)(void))¶
- Part of the 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 ініціалізовано кілька разів, перед кожною ініціалізацією Python потрібно викликати
PyImport_AppendInittab()
абоPyImport_ExtendInittab()
.