我有以下設置。我試圖在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