尝试通过字符串从同一包中的模块导入类

时间:2013-05-27 18:13:36

标签: python python-3.x

我有一个市场机器人,可以支持不同的市场。 目前它已经硬编码到代码中,我想改变它。 在我的src文件夹中,我有一个进口市场的main.py。 市场是一个看起来像这样的包

markets/
    __init__.py
    market_template.py
    market1.py
    market2.py

我所做的是在我的 init .py中添加了一个加载和自动加载功能,看起来像这样

logging.getLogger(__name__)
slaves = {}

def autoload():
    for market in settings.conf["Markets"]:
        load(market)

def load(market):
    print("Starting {} interface".format(market))
    slaves[market].start()

autoload()

这部分效果很好,现在解决了真正的问题。

我想导入指定的市场模块及其内部类(其名称与模块相同) 这很容易通过'from .market1 import market1'来实现,但是那个类似于它在同一个包中的小点让一切变得糟透了。 我尝试了很多东西,其中两个是

from . import *
eval('market1')

module = __import__("." + market)
my_class = getattr(module, market)

但是这些都不能通过某种原因访问同一个包中的任何东西...... 感谢

1 个答案:

答案 0 :(得分:1)

from importlib import import_module
import_module(str("." + market), 'market')

感谢我在问题

下的评论栏中的blender