我有一个市场机器人,可以支持不同的市场。 目前它已经硬编码到代码中,我想改变它。 在我的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)
但是这些都不能通过某种原因访问同一个包中的任何东西...... 感谢
答案 0 :(得分:1)
from importlib import import_module
import_module(str("." + market), 'market')
感谢我在问题
下的评论栏中的blender