簡體   English   中英

在Python中動態導入(虛線說明)

[英]Dynamic Importing in Python (Dotted statments)

我在使用以下代碼時遇到麻煩:

def get_module(mod_path):
    mod_list = mod_path.split('.')
    mod = __import__(mod_list.pop(0))

    while mod_list:
        mod = getattr(mod, mod_list.pop(0))

    return mod

當我執行get_module('qmbpmn.common.db_parsers') ,出現錯誤消息: AttributeError: 'module' object has no attribute 'db_parsers'

但是: import qmbpmn.common.db_parsers可以正常工作。

使用__import__導入子模塊時,必須將父包作為fromlist參數傳遞:

>>> __import__("os.path")
<module 'os' from '/usr/lib/python2.6/os.pyc'>
>>> __import__("os.path", fromlist=["os"])
<module 'posixpath' from '/usr/lib/python2.6/posixpath.pyc'>

__import__適用於虛線模塊路徑,因此應該可以

def get_module(mod_path):
    return __import__(mod_path)

或更簡單

get_module = __import__

也許我誤會了這個問題

導入軟件包不會自動將所有子模塊導入其名稱空間。 例如

import qmbpmn

並不意味着

qmbpmn.common.db_parsers

會自動解決

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM