gpt4 book ai didi

python - 在导入 Hook 中获取完整的模块名称

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:31 26 4
gpt4 key购买 nike

我正在实现一个导入 Hook ,它使用 pip 自动安装缺少的模块。

到目前为止,它在简单模块(只有一层)上工作正常,例如 unipath。但是,如果我尝试将它与多级导入一起使用,例如 zope.interface,导入程序只会获得第一部分 (zope)。这会导致它失败,因为 PyPI 中不存在 zope

知道如何在导入时获取完整的模块名称吗?

这里是一些代码:

class PipLoader(object):
def __init__(self):
self.module = None

def find_module(self, name, path):
print "Will install module {}".format(name)
self.module = None
sys.meta_path.remove(self)
try:
pip_install(name)
self.module = importlib.import_module(name)
finally:
sys.meta_path.append(self)
return self

def load_module(self, name):
if not self.module:
raise ImportError("Unable to load module")
module = self.module
sys.modules[name] = module
return module

def install():
sys.meta_path.append(PipLoader())

最佳答案

如果您替换 __import__ 那么您将获得模块导入的模块全局变量和更多信息。

关于python - 在导入 Hook 中获取完整的模块名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19596654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com