Python 试图通过字符串从同一包中的模块导入类
我有一个市场机器人,可以支持不同的市场。 目前它是硬编码到代码中的,我想更改它。 在我的src文件夹中,我有一个导入市场的main.py。 Markets是一个看起来像这样的包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
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'
)?