如何导入 python 类但避免在该模块中运行 import 语句?
Module foo
from bar import A
Module bar
import alpha
class A(object):
...
class B(objects):
...
我想导入 A 类,但不需要 B 类。B 类需要模块栏中的导入语句,但如果可能的话,我想避免需要安装该依赖项,因为(我假设)它将被加载到内存中但不会被使用。
如有任何帮助,我们将不胜感激。
最佳答案
如果不修改其源代码,您就无法阻止 bar
导入 alpha
。但是您可以通过将 alpha
写入 sys.modules
来“伪造”它:
>>> import alpha
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named alpha
>>> import sys; sys.modules['alpha'] = object()
>>> import alpha
>>>
这是可行的,因为 Python 将导入的模块缓存在 sys.modules
中,因此,如果您导入某些内容两次,则不必在第二次执行所有艰苦的工作。添加 alpha
意味着 Python 认为您已经导入了 alpha
,因此当 bar
尝试这样做时,它只会取回缓存的副本.
显然,您应该仔细考虑是否愿意这样做 - 如果 bar
在任何地方实际使用 alpha
,它就会以意想不到的方式崩溃。
关于python - 从模块导入 Python 类,但不导入依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10330588/