首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将pyi (类型存根文件)导入普通python模块

将pyi (类型存根文件)导入普通python模块
EN

Stack Overflow用户
提问于 2019-05-14 16:10:10
回答 1查看 2.3K关注 0票数 11

我有一个程序(如宏),它在父程序中运行,并从该程序导入一个API模块(让我们称它为foo)。问题是,该模块只存在于该程序中,所以我不能在软件之外运行拟多姆,因为脚本会抛出一个ReferenceError。为了帮助我自己的开发,我在我的项目目录中创建了一个类型存根文件foo.pyi。如果导入失败,我想要做的是将该类型存根导入为一个普通Python文件,以提供虚拟函数和属性。类似于:

代码语言:javascript
复制
try:
  import foo
except ImportError:
  from . import foo.pyi

但是,这会引发一个错误,因为它试图从项目文件夹中不存在的pyi库中导入foo。我唯一能想到的其他选择是拥有一个.pyi文件的相同副本,比如"dummy_foo.py“,但是我必须在一个回购中维护同一个文件的两个副本。我不想那样做。

EN

回答 1

Stack Overflow用户

发布于 2022-06-22 20:23:11

我写了一段时间以前,我认为应该仍然有效:

代码语言:javascript
复制
import importlib


def import_stub(stubs_path, module_name):
    sys.path_hooks.insert(0,
        importlib.machinery.FileFinder.path_hook(
            (importlib.machinery.SourceFileLoader, ['.pyi']))
    )
    sys.path.insert(0, stubs_path)
    
    try:
        return importlib.import_module(module_name)
    finally:
        sys.path.pop(0)
        sys.path_hooks.pop(0)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56134577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档