我有一个文件,
foo.py
import UnavailableModule
class Bob:
def useful_func(self, arg):
# Do useful stuff (doesn't use UnavailableModule)
在同一目录中的另一个文件
bar.py
中,我需要useful_func()
但不能这样做
from foo.Bob import useful_func
因为它会导致
problem: [Error 126] The specified module could not be found
An exception has occurred, use %tb to see the full traceback.
有追溯
C:\...\bar.py in <module>()
----> 1 from foo.Bob import useful_func
C:\...\foo.py in <module>()
----> 1 import UnavailableModule
是否可以仅通过其他方式获得
useful_func()
?
首先,您的
useful_func
是一个实例方法,您可以将其与整个 Bob
类一起导入,如下所示:
from foo import Bob
然后你可以创建
Bob
的对象并像这样使用你的函数:
b = Bob()
b.useful_func('something useful i believe')
但这并不能解决你的问题。我读到的问题是,在导入
UnavailableModule
模块时运行 foo
的导入。
好吧,它将被运行,因为这就是导入的工作方式,您可以使用这样的构造来阻止此导入:
class Bob:
def useful_func(self, arg):
pass
if __name__ == '__main__':
import UnavailableModule
这将防止在从另一个模块导入
UnavailableModule
模块时导入您的 foo
。但是我不确定这是否是好的做法。不过它确实有效。