我可以运行这两行,但我想用字符串来做,
from envs.test_env import TestEnv
my_instance = TestEnv()
文件test_env.py位于文件夹envs中。所以envs / test_folder.py
我想要字符串变量,如:
path = "envs/test_env"
my_class_name = "TestEnv"
mod = __import__(path)
my_class = getattr(my_class_name,my_class_name)
my_instance = my_class()
我得到的错误是:
ModuleNotFoundError: No module named 'envs/test_env'
我看到有一些类似的门票,但我看起来不同,因为我结合了几个不同的东西。我想导入一个子目录中的文件,我有字符串中的类名和文件名。
答案 0 :(得分:0)
将模块添加到路径中。 请查看下面的示例:
目录结构:
Current_Dir
|
|---qwerty.py
|
|---dinesh
|
|--dsp.py -->> This file has class 'call_me'
dsp.py代码:
class call_me(object):
def __init__(self):
pass
def run(self):
print("Dinesh")
qwerty.py代码:
import sys
import os
lib_path = os.getcwd() + os.sep + 'dinesh'
sys.path.insert(0,lib_path)
mod = __import__('dsp')
a = getattr(mod,'call_me')
s = a()
s.run()
<强>输出强>
C:\Users\punddin\PycharmProjects\demo>python qwerty.py
Dinesh
=============================================== =========================
使用importlib
import sys
import os
import importlib
lib_path = os.getcwd() + os.sep + 'dinesh'
sys.path.insert(0,lib_path)
mod = importlib.import_module('dsp')
a = getattr(mod,'call_me')
s = a()
s.run()