簡體   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