我有以下设置。我试图在a.py中动态加载一个模块(在这种情况下,从c.py中调用它并将其调用为BeLoaded)。然后我想导入另一个模块fileB,它有一个类将继承该类toBeLoaded.anotherClass。我知道如果我在b.py中导入c.py,它会解决问题,但由于我动态加载c.py,所以我不知道如何实现。它会工作,如果我可以以某种方式传递一个变量b.py之前,它被导入,但我不知道如何做到这一点。在导入之前将变量传递给模块
这是我目前的设置。
a.py
import imp
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-c","--configFile",dest="configFile", default="c.py",help="")
(options, args) = parser.parse_args()
modulePath=options.configFile
toBeLoaded = imp.load_source('toBeLoaded',modulePath)
import b
b.py
class TestClass(toBeLoaded.anotherClass):
def __init__(self):
print self.x
#do stuff here
c.py
class anotherClass():
def __init__(self):
self.x=5
我得到以下错误:
Traceback (most recent call last):
File "a.py", line 6, in <module>
import b
File "/test/b.py", line 1, in <module>
class TestClass(toBeLoaded.anotherClass):
NameError: name 'toBeLoaded' is not defined
在解决问题我不明白为什么你不只是导入anotherClass在b.py和IM敢肯定你不能传递任何东西一个模块,你也不应该尝试。 –
我可能已经过于简化了。但是,a.py的工作方式是使用sys.argv动态加载模块。我将编辑上面的代码。 – user1763510
其实我是从optparse import OptionParser使用 – user1763510