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

Python 试图通过字符串从同一包中的模块导入类,python,python-3.x,Python,Python 3.x,我有一个市场机器人,可以支持不同的市场。 目前它是硬编码到代码中的,我想更改它。 在我的src文件夹中,我有一个导入市场的main.py。 Markets是一个看起来像这样的包 markets/ __init__.py market_template.py market1.py market2.py logging.getLogger(__name__) slaves = {} def autoload(): for market in setting

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

markets/
    __init__.py
    market_template.py
    market1.py
    market2.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()
我所做的是在我的init.py中添加一个加载和一个自动加载函数,如下所示

markets/
    __init__.py
    market_template.py
    market1.py
    market2.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()
这一部分效果很好,现在我们来看看真正的问题

我想导入指定的markets模块及其内部类(与模块同名) 这很容易由“from.market1 import market1”实现,但这个小点类似于它在同一个包中,这让一切都变得一团糟。 我已经尝试了多种方法,其中两种是

from . import *
eval('market1')

但由于某种原因,它们都无法访问同一个包中的任何内容。。。 谢谢

感谢我问题下评论栏中的blender


多亏了我的问题下评论栏中的blender

你的第二次尝试会发生什么?只需从导入()中选择“ImportError:没有名为.market1的模块”,看看我以前做过,但不知道如何做。首先,我尝试了“导入模块(市场)”,但这不在本地包中。然后我尝试了“import_module(str(“.“+market))”,它给了我“TypeError:相对导入需要'package'参数”。我完全不知道该使用什么作为包参数,因为它在它的selves包中?您是否尝试提供
package
参数(
package='markets'
)?您的第二次尝试会发生什么?只需从导入()中选择“ImportError:no module named.market1”看看我以前做过的,但是不知道怎么做。首先,我尝试了“导入模块(市场)”,但这不在本地包中。然后我尝试了“import_module(str(“.“+market))”,它给了我“TypeError:相对导入需要'package'参数”。我完全不知道用什么作为包参数,因为它在它的selves包中?您是否尝试提供
package
参数(
package='markets'
)?