1

我正在使用 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

项目示例:

  • 我的包裹
    • _初始化 _ .py
    • http.py(有相关的http类等)
    • foo.py(需要使用内置的 http 而不是 mypackage.http)

谢谢!

4

1 回答 1

1

只需使用

import http

在 Python 2 中,如果foo是 in ,这将不起作用mypackage,但相对导入需要在 Python 3 中显式。

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

python -m mypackage.foo

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

于 2013-09-03T19:07:27.513 回答