1

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

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)

但是由于某种原因,这些都无法访问同一个包中的任何内容......谢谢

4

1 回答 1

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

感谢我问题下评论字段中的搅拌机

于 2013-05-27T20:53:55.580 回答