Імпорт модулів

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.

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.

Подібно до 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.

Повертає об’єкт модуля, що відповідає імені модуля. Аргумент name може мати форму package.module. Спочатку перевірте словник модулів, якщо він там є, а якщо ні, створіть новий і вставте його в словник модулів. Повертає NULL із встановленим винятком у разі помилки.

Примітка

Ця функція не завантажує та не імпортує модуль; якщо модуль ще не завантажено, ви отримаєте порожній об’єкт модуля. Використовуйте PyImport_ImportModule() або один із його варіантів, щоб імпортувати модуль. Структури пакетів, визначені назвою name із крапками, не створюються, якщо вони ще не присутні.

Added in version 3.3.

PyObject *PyImport_AddModule(const char *name)
Return value: Borrowed reference. Part of the Stable ABI.

Подібно до PyImport_AddModuleObject(), але ім’я є рядком у кодуванні UTF-8 замість об’єкта Юнікод.

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 function 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 sys.modules in error cases, even if name was already in sys.modules on entry to PyImport_ExecCodeModule(). Leaving incompletely initialized modules in 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 __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 of SourceFileLoader otherwise.

The module’s __file__ attribute will be set to the code object’s co_filename. If applicable, __cached__ will also be set.

Ця функція перезавантажить модуль, якщо він уже був імпортований. Перегляньте PyImport_ReloadModule() для передбачуваного способу перезавантаження модуля.

Якщо name вказує на ім’я з крапками у формі package.module, будь-які ще не створені структури пакунків не будуть створені.

Дивіться також PyImport_ExecCodeModuleEx() і PyImport_ExecCodeModuleWithPathnames().

Змінено в версії 3.12: The setting of __cached__ and __loader__ is deprecated. See ModuleSpec for alternatives.

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. З усіх трьох функцій найкраще використовувати цю.

Added in version 3.3.

Змінено в версії 3.12: Setting __cached__ is deprecated. See ModuleSpec 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.

Як PyImport_ExecCodeModuleObject(), але name, pathname і cpathname є рядками в кодуванні UTF-8. Також робляться спроби з’ясувати, яким має бути значення pathname від cpathname, якщо для першого встановлено значення NULL.

Added in version 3.2.

Змінено в версії 3.3: Uses imp.source_from_cache() in calculating the source path if only the bytecode path is provided.

Змінено в версії 3.12: No longer uses the removed imp module.

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 є авторитетним і має використовуватися замість цієї функції.

Added in version 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 і встановлює помилку, якщо пошук не вдався.

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 the sys.path_importer_cache dict. If it wasn’t yet cached, traverse sys.path_hooks until a hook is found that can handle the path item. Return None 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 in sys.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(). (Зверніть увагу на неправильну назву — ця функція перезавантажить модуль, якщо його вже було імпортовано.)

Added in version 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 the size 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 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.

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.

PyObject *(*initfunc)(void)

Initialization function for a module built into the interpreter.

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 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 must be called before Py_Initialize().

Якщо Python ініціалізовано кілька разів, перед кожною ініціалізацією Python потрібно викликати PyImport_AppendInittab() або PyImport_ExtendInittab().