Python 仅从文件导入特定函数
我有一个文件,Python 仅从文件导入特定函数,python,python-import,python-module,Python,Python Import,Python Module,我有一个文件,foo.py import UnavailableModule class Bob: def useful_func(self, arg): # Do useful stuff (doesn't use UnavailableModule) 在同一目录下的另一个文件bar.py中,我需要有用的函数(),但不能这样做 from foo.Bob import useful_func 因为它会导致 problem: [Error 126] The speci
foo.py
import UnavailableModule
class Bob:
def useful_func(self, arg):
# Do useful stuff (doesn't use UnavailableModule)
在同一目录下的另一个文件bar.py
中,我需要有用的函数()
,但不能这样做
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
C:\…\bar.py in()
---->1从foo.Bob导入有用的函数
C:\…\foo.py in()
---->1导入不可用模块
是否可以仅通过其他方式获取
有用的函数()
?首先,您的有用的函数是一个实例方法,您可以使用整个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
这将防止从另一个模块导入foo
模块时导入您的UnavailableModule
。然而,我不确定这是否是一种好的做法。不过它可以工作。嗯,首先,有用的_func
是一个方法,因此您必须导入定义它的类Bob
。其次,当您导入时,文件的内容总是运行的,您不能只运行部分文件。此外,您不能从foo.Bob
导入任何,因为您不能从类导入。为什么foo.py
试图导入不可用的模块
?如果foo.py
需要UnavailableModule
,为什么你没有这个模块?@user2357112这涉及到Windows Linux子系统是一个很长的故事。那么,你需要要么获得UnavailableModule
,要么改变foo.py
,不假设模块存在。