簡體   English   中英

Python 從動態創建的模塊中導入所有 *

[英]Python import all * from dynamically created module

我發現通過引用它們的名稱作為文本來導入動態創建/命名的模塊的許多變體,但都將模塊作為一個整體導入並且似乎不便於導入所有 *....

就我而言,文件中的對象是動態創建和命名的,因此無法事先發現它們的身份。

這行得通,但是有沒有更好的方法可能使用 importlib?

PREFIX = "my_super_new"

active_data_module = "{0}_data_module".format(PREFIX)

exec("from {0} import *".format(active_data_module))

您可以在模塊中使用vars 這將返回模塊上所有屬性的字典(我認為)。 然后您可以將字典分配給globals字典以使其在當前模塊中可訪問:

import importlib

PREFIX = "my_super_new"
active_data_module = "{0}_data_module".format(PREFIX)

module = importlib.import_module(active_data_module)

globals().update(vars(module))

使用彼得伍德的回答,我創建了一個小實用程序 function:

import importlib

def import_everything_from_module_by_name(module_name):
    globals().update(vars(importlib.import_module(module_name)))

modules_for_import = [
    module_a,
    module_b,
    module_c
    ]

for module_name in modules_for_import:
    import_everything_from_module_by_name(module_name)

暫無
暫無

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

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