繁体   English   中英

如何使用 importlib.import_module 在 Python 中导入模块

[英]How to import a module in Python with importlib.import_module

我正在尝试在 Python 2.7.2 中使用importlib.import_module并遇到奇怪的错误。

考虑以下目录结构:

a
    |
    + - __init__.py
      - b
        |
        + - __init__.py
          - c.py

a/b/__init__.py有以下代码:

import importlib

    mod = importlib.import_module("c")

(在实际代码中"c"有一个名字。)

尝试import ab ,会产生以下错误:

>>> import a.b
    Traceback (most recent call last):
      File "", line 1, in 
      File "a/b/__init__.py", line 3, in 
        mod = importlib.import_module("c")
      File "/opt/Python-2.7.2/lib/python2.7/importlib/__init__.py", line 37, in   import_module
        __import__(name)
    ImportError: No module named c

我错过了什么?

谢谢!

对于相对进口,您必须:

  • a) 使用相对名称
  • b) 明确提供锚点

    importlib.import_module('.c', 'a.b')

当然,你也可以只做绝对导入:

importlib.import_module('a.b.c')

我认为最好使用importlib.import_module('.c', __name__)因为您不需要了解ab

我也想知道,如果你必须使用importlib.import_module('abc') ,为什么不直接使用import abc呢?

并且不要忘记为每个文件夹/子文件夹创建一个__init__.py (即使它们是空的)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM