我有一个市场机器人,可以支持不同的市场。目前它被硬编码到代码中,我想改变它。在我的 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)
但是由于某种原因,这些都无法访问同一个包中的任何内容......谢谢