新聞中心
導入模塊
PyObject *PyImport_ImportModule(const char *name)

創(chuàng)新互聯(lián)公司2013年至今,是專業(yè)互聯(lián)網技術服務公司,擁有項目成都網站制作、網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元英山做網站,已為上家服務,為英山各地企業(yè)和個人服務,聯(lián)系電話:13518219792
Return value: New reference. Part of the Stable ABI.
這是下面 PyImport_ImportModuleEx() 的簡化版接口,將 globals 和 locals 參數(shù)設為 NULL 并將 level 設為 0。 當 name 參數(shù)包含一個點號(即指定了一個包的子模塊)時,fromlist 參數(shù)會被設為列表 ['*'] 這樣返回值將為所指定的模塊而不像在其他情況下那樣為包含模塊的最高層級包。 (不幸的是,這在 name 實際上是指定一個子包而非子模塊時將有一個額外的副作用:在包的 __all__ 變量中指定的子模塊會被加載。) 返回一個對所導入模塊的新引用,或是在導入失敗時返回 NULL 并設置一個異常。 模塊導入失敗同模塊不會留 在 sys.modules 中。
該函數(shù)總是使用絕對路徑導入。
PyObject *PyImport_ImportModuleNoBlock(const char *name)
Return value: New reference. Part of the Stable ABI.
該函數(shù)是 PyImport_ImportModule() 的一個被遺棄的別名。
在 3.3 版更改: 在導入鎖被另一線程掌控時此函數(shù)會立即失敗。 但是從 python 3.3 起,鎖方案在大多數(shù)情況下都已切換為針對每個模塊加鎖,所以此函數(shù)的特殊行為已無必要。
PyObject *PyImport_ImportModuleEx(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)
Return value: New reference.
導入一個模塊。 請參閱內置 Python 函數(shù) __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.
導入一個模塊。 關于此函數(shù)的最佳說明請參考內置 Python 函數(shù) __import__(),因為標準 __import__() 函數(shù)會直接調用此函數(shù)。
返回值是一個對所導入模塊或最高層級包的新引用,或是在導入失敗時則為 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 版更改: 不再接受 level 為負數(shù)值。
PyObject *PyImport_Import(PyObject *name)
Return value: New reference. Part of the Stable ABI.
這是一個調用了當前“導入鉤子函數(shù)”的更高層級接口(顯式指定 level 為 0,表示絕對導入)。 它將發(fā)起調用當前全局作用域下 __builtins__ 中的 __import__() 函數(shù)。 這意味著將使用當前環(huán)境下安裝的任何導入鉤子來完成導入。
該函數(shù)總是使用絕對路徑導入。
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 參數(shù)的形式可以為 package.module。 如果存在 modules 字典則首先檢查該字典,如果找不到,則創(chuàng)建一個新模塊并將其插入到 modules 字典。 在失敗時返回 NULL 并設置一個異常。
備注
此函數(shù)不會加載或導入指定模塊;如果模塊還未被加載,你將得到一個空的模塊對象。 請使用 PyImport_ImportModule() 或它的某個變體形式來導入模塊。 name 使用帶點號名稱的包結構如果尚不存在則不會被創(chuàng)建。
3.3 新版功能.
PyObject *PyImport_AddModule(const char *name)
Return value: Borrowed reference. Part of the Stable ABI.
類似于 PyImport_AddModuleObject(),但其名稱為 UTF-8 編碼的字符串而不是 Unicode 對象。object.
PyObject *PyImport_ExecCodeModule(const char *name, PyObject *co)
Return value: New reference. Part of the Stable ABI.
給定一個模塊名稱(可能為 package.module 形式)和一個從 Pyhon 字節(jié)碼文件讀取或從內置函數(shù) compile() 獲取的代碼對象,加載該模塊。 返回對該模塊對象的新引用,或者如果發(fā)生錯誤則返回 NULL 并設置一個異常。 在發(fā)生錯誤的情況下 name 會從 sys.modules 中被移除,即使 name 在進入 PyImport_ExecCodeModule() 時已存在于 sys.modules 中。 在 sys.modules 中保留未完全初始化的模塊是危險的,因為導入這樣的模塊沒有辦法知道模塊對象是否處于一種未知的(對于模塊作業(yè)的意圖來說可能是已損壞的)狀態(tài)。
模塊的 __spec__ 和 __loader__ 如果尚未設置的話,將被設置為適當?shù)闹怠?相應 spec 的加載器(如果已設置)將被設為模塊的 __loader__ 而在其他情況下設為 SourceFileLoader 的實例。
模塊的 __file__ 屬性將被設為代碼對象的 co_filename。 如果適用,__cached__ 也將被設置。
如果模塊已被導入則此函數(shù)將重載它。 請參閱 PyImport_ReloadModule() 了解重載模塊的預定方式。
如果 name 指向一個形式為 package.module 的帶點號的名稱,則任何尚未創(chuàng)建的包結構仍然不會被創(chuàng)建。
另請參閱 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(),但如果 pathname 不為 NULL 則會被設為模塊對象的 __file__ 屬性的值。
參見 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(),但如果 cpathname 不為 NULL 則會被設為模塊對象的 __cached__ 值。 在三個函數(shù)中,這是推薦使用的一個。
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 也被設為 NULL 則還會嘗試根據 cpathname 推斷出前者的值。
3.2 新版功能.
在 3.3 版更改: 如果只提供了字節(jié)碼路徑則會使用 imp.source_from_cache() 來計算源路徑。
long PyImport_GetMagicNumber()
Part of the Stable ABI.
返回 Python 字節(jié)碼文件(即 .pyc 文件)的魔數(shù)。 此魔數(shù)應當存在于字節(jié)碼文件的開頭四個字節(jié)中,按照小端字節(jié)序。 出錯時返回 -1。
在 3.3 版更改: 失敗時返回值 -1。
const char *PyImport_GetMagicTag()
Part of the Stable ABI.
針對 PEP 3147 格式的 Python 字節(jié)碼文件名返回魔術標簽字符串。 請記住在 sys.implementation.cache_tag 上的值是應當被用來代替此函數(shù)的更權威的值。
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.
返回針對一個 sys.path/pkg.__path__ 中條目 path 的查找器對象,可能會通過 sys.path_importer_cache 字典來獲取。 如果它尚未被緩存,則會遍歷 sys.path_hooks 直至找到一個能處理該 path 條目的鉤子。 如果沒有可用的鉤子則返回 None;這將告知調用方 path based finder 無法為該 path 條目找到查找器。 結果將緩存到 sys.path_importer_cache。 返回一個指向查找器對象的新引用。
int PyImport_ImportFrozenModuleObject(PyObject *name)
Return value: New reference. Part of the Stable ABI since version 3.7.
加載名稱為 name 的已凍結模塊。 成功時返回 1,如果未找到模塊則返回 0,如果初始化失敗則返回 -1 并設置一個異常。 要在加載成功后訪問被導入的模塊,請使用 PyImport_ImportModule()。 (請注意此名稱有誤導性 —- 如果模塊已被導入此函數(shù)將重載它。)
3.3 新版功能.
在 3.4 版更改: __file__ 屬性將不再在模塊上設置。
int PyImport_ImportFrozenModule(const char *name)
Part of the Stable ABI.
類似于 PyImport_ImportFrozenModuleObject(),但其名稱為 UTF-8 編碼的字符串而不是 Unicode 對象。
struct _frozen
這是針對已凍結模塊描述器的結構類型定義,與由freeze工具所生成的一致 (請參看 Python 源代碼發(fā)行版中的 Tools/freeze/)。 其定義可在 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.
向現(xiàn)有的內置模塊表添加一個模塊。 這是對 PyImport_ExtendInittab() 的便捷包裝,如果無法擴展表則返回 -1。 新的模塊可使用名稱 name 來導入,并使用函數(shù) initfunc 作為在第一次嘗試導入時調用的初始化函數(shù)。 此函數(shù)應當在 Py_Initialize() 之前調用。
struct _inittab
描述內置模塊列表中的一個條目的結構體。 每個結構體都給出了內置在解釋器中的某個模塊的名稱和初始化函數(shù)。 名稱是一個 ASCII 編碼的字符串。 嵌入了 Python 的程序可以使用該結構體的數(shù)組來與 PyImport_ExtendInittab() 相結合以提供額外的內置模塊。 該結構體在 Include/import.h 中被定義為:
struct _inittab {const char *name; /* ASCII encoded string */PyObject* (*initfunc)(void);};
int PyImport_ExtendInittab(struct _inittab *newtab)
將內置模塊表添加一組模塊。 newtab 數(shù)組必須以一個包含以 NULL 作為 name 字段的崗哨條目結束;未能提供崗哨值會導致內存錯誤。 成功時返回 0 或者如果無法分配足夠內存來擴展內部表則返回 -1。 當發(fā)生失敗時,將不會添加模塊到內部表。 此函數(shù)必須在 Py_Initialize() 之前調用。
如果 Python 要被多次初始化,則 PyImport_AppendInittab() 或 PyImport_ExtendInittab() 必須在每次 Python 初始化之前調用。
當前名稱:創(chuàng)新互聯(lián)Python教程:導入模塊
網頁URL:http://www.5511xx.com/article/cdjdoeg.html


咨詢
建站咨詢
