我使用的是一个模块module_1
,如果它安装在系统上,它可以使用module_2
,但是如果它没有安装在系统上,它可以使用其他实现。它检查module_2
的方法是:
# module_1.__init__.py
try:
import module_2
_MODULE2 = True
except ImportError:
_MODULE2 = False
我在同一个环境中安装了module_2
,但我不想module_1
使用它。你知道吗
有没有办法import module_1
但重写import
机制,使module_2
的import
具体地引发ImportError
?你知道吗
我试过的:
import sys
class hide_module_2:
def __enter__(self):
class HideModule2(dict):
def __init__(self, *args, **kwargs):
self.update(*args, **kwargs)
def __getitem__(self, key):
if key == 'module_2':
raise ImportError('Module 2 de')
super().__getitem__(key)
sys.modules = NoPandas(**sys.modules)
def __exit__(self, exc_type, exc_value, traceback):
# revert to regular dictionary
sys.modules = dict(**sys.modules)
with hide_module_2():
import module_1
我认为这会起作用,因为sys.modules
是当前import
编辑模块的字典,我认为它会在import
中引用。你知道吗
我能够设计出一种黑客的解决方案,因为导入系统会抛出一个importorror,如果有东西被导入并系统模块有一个
None
:相关问题 更多 >
编程相关推荐