内置的python加载模块

时间:2013-09-03 18:57:52

标签: python dynamic module built-in

我正在使用python 3,我有一个名为"http" (mypackage.http)的模块,我有另一个名为foo的模块,我想加载内置的http module(不是我的mypackage.http }模块)

我可以用

imp.find_module('http', sys.path[1:])

获取内置__ init__.py importlib path

示例:

/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/importlib/__ init__.py

但不推荐使用imp.find_module()/ load_module()。

如何通过http module等其他方式导入此内置importlib

项目示例:

  • mypackage的
    • _ init _ .py
    • http.py(有相关的http类等)
    • foo.py(需要使用内置的http,而不是mypackage.http)

谢谢!

1 个答案:

答案 0 :(得分:1)

只需使用

import http

在Python 2中,如果foo位于mypackage,则不会有效,但相对导入需要在Python 3中明确。

如果您将模块作为脚本运行,则需要以某种方式修复路径。如果使用常规导入机制可以找到mypackage,那么您可以使用-m开关运行模块:

python -m mypackage.foo

否则,您可能需要检查路径并手动更改它,以及设置__package__以便相对导入正常工作。