簡體   English   中英

嘗試通過字符串從同一包中的模塊導入類

[英]Trying to import class from a module in the same package by a string

我有一個市場機器人,可以支持不同的市場。 目前,它已硬編碼到代碼中,我想更改它。 在我的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()

這部分效果很好,所以現在解決了真正的問題。

我想在其中導入指定的市場模塊及其類(與模塊具有相同的名稱),這很容易由“來自.market1 import market1”進行制作,但是類似於它在同一包裝中的小點使得所有內容地獄。 我已經嘗試了多種方法,其中兩種是

from . import *
eval('market1')

module = __import__("." + market)
my_class = getattr(module, market)

但是由於某種原因,這些都無法訪問同一軟件包中的任何內容...謝謝

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

感謝在我的問題下的評論字段中的Blender

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM