使用“__import__”从字符串变量导入模块给出的结果与普通导入语句不同

2023-11-22

我正在为嵌套 matplotlib (MPL) 库编写文档(个人),该库与 MPL 自己提供的文档不同,由感兴趣的子模块包提供。我正在编写 Python 脚本,希望能够在未来的 MPL 版本中自动生成文档。

我选择了感兴趣的子模块/包,并希望列出它们的主要类,我将从中生成列表并使用pydoc.

问题是我找不到一种方法来指示 Python 从字符串加载子模块。这是我尝试过的示例:

import matplotlib.text as text
x = dir(text)
i = __import__('matplotlib.text')
y = dir(i)
j = __import__('matplotlib')
z = dir(j)

这是通过 pprint 对上述列表进行 3 种比较:

enter image description here

我不明白加载了什么y对象 - 它是基础matplotlib再加上其他东西,但它缺乏我想要的信息,那就是来自的主要课程matplotlib.text包裹。它是屏幕截图中顶部的蓝色部分(x list).


The __import__函数可能有点难以理解。

如果你改变

i = __import__('matplotlib.text')

to

i = __import__('matplotlib.text', fromlist=[''])

then i将参考matplotlib.text.

在Python 3.1或更高版本中,您可以使用importlib:

import importlib

i = importlib.import_module("matplotlib.text")

一些笔记

  • 如果您尝试从子文件夹导入某些内容,例如./feature/email.py,代码看起来像importlib.import_module("feature.email")

  • 在 Python 3.3 之前,如果没有,则无法导入任何内容__init__.py在包含您尝试导入的文件的文件夹中(请参阅caveats在决定是否要保留文件以实现向后兼容性之前,例如和pytest).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“__import__”从字符串变量导入模块给出的结果与普通导入语句不同 的相关文章

随机推荐

  • 从 C# 运行 PowerShell 脚本

    我正在尝试使用 Visual Studio 构建图形平台 我不是开发人员 我想在单击按钮时运行 PowerShell 或批处理文件 问题是 当我尝试 C 语法时 即使我安装了 PowerShell 扩展 它也不起作用 我尝试了一些在互联网上
  • 调试Linux内核恐慌

    我是内核调试的新手 下面是最后一条内核消息 根据我的理解 它正在尝试访问空指针 但我不明白为什么它要关闭 cup 0 Unable to handle kernel paging request at virtual address 400
  • 如何使 NSView 透明并显示 NSWindow 下的内容? [复制]

    这个问题在这里已经有答案了 我正在 osx 中制作一个放大镜风格的应用程序来娱乐 但我遇到了一个我似乎找不到答案的障碍 我在 NSWindow 中有一个 NSView 我将视图设置为clearColor 将 alpha 设置为 0 25 但
  • 如何覆盖 4mb API 路由正文大小限制?

    我尝试了多种方法来覆盖 API 路由主体大小限制 https nextjs org docs messages api routes body size limit 设置自定义服务器 基本 Express 应用程序 在相关路由上传递 bod
  • 在R中按时间范围合并两个数据帧

    我正在处理牛的繁殖力数据 在一个表 数据框 中 我记录了一头牛所执行的所有服务 例如授精 在另一个表中 我得到了妊娠诊断 阳性或阴性 两者都有一个唯一的 ID animal id 我的挑战是成功地将两个表合并到正确的数据范围内 这意味着我需
  • 有没有办法使用内存分配报告来分析 ruby​​ 1.9.2 脚本?

    我的 ruby 应用程序遇到了瓶颈 但我不知道它在哪里变慢 我找到了memprof 但它不支持1 9 我还发现 ruby prof 似乎在 1 9 2 上运行良好 但内存分配需要修补 ruby 解释器 并且我只能找到 ruby 1 8 的补
  • Spring多事务管理器、单事务

    我有一个复杂的情况 我必须使用 2 个不同的数据库 因此我使用 2 个不同的事务管理器 Spring中有没有办法将这些事务管理器链接到单个事务中工作 如果第二个数据源出现异常 第一个数据源的更改应该回滚
  • vue代理设置不起作用

    我有一个 Vue 项目 vue cli 3 x 我定义的代理package json基于本文不管用 目标服务器看不到 API 请求 我在这里缺少什么 vue 文件
  • xslt 仅在一个节点中将 \n 替换为

    嘿 我有一个节点 其中包含一条消息 例如 string1字符串2刺3 但是 当它渲染时 它会渲染所有一行 我如何将所有 n 替换为 s 我试过了 但我收到这个错误 加载样式表时出错 XSLT XPath 函数无效 我该怎么做呢 在您要处理的
  • Android使用buildozer编译错误

    我正在尝试编译一个 apk this one 使用构建器 但我不断收到下面的命令失败消息 我尝试过使用不同的 python 路径 重新安装 buildozer 使用不同的 buildozer 路径 从 Mac HD 编译 使用 sudo 编
  • Eigen - 将常量数组映射到动态向量

    我需要定义一个函数 它需要constC 数组并将其映射到Eigen地图 以下代码给我一个错误 double data 10 0 0 typedef Eigen Map
  • 在 WebView Google Tv 应用上处理方向键上的箭头键

    我已经构建了一个 Android 应用程序 它在 WebView 中加载 html 页面 并且工作正常 除了应该在方向键上发生的操作不起作用这一事实 如果我用其他键更改箭头的操作 它就会起作用 在 Web 浏览器中加载 html 页面工作正
  • 如何将 HTML 输入值数据类型更改为整数?

    我正在使用 jQuery 检索输入按钮提交的值 该值应该是一个整数 我想将其增加一并显示它 Getting immediate Voting Count down button id var countUp this closest li
  • Android 浏览器 - 当锚点聚焦时删除轮廓边框

    我在我的 Android 应用程序上使用一个加载外部页面的 webview 它有一些锚点 a 标签 当我按下它时 会出现黄色边框 我怎样才能防止它并删除这个边框 我尝试过以下技巧 jQuery a focus function this a
  • 在 Laravel 中创建可链接的方法

    我一直在尝试在 laravel eloquent 中创建自己的可链接方法 但我错过了一些东西 并且不确定什么 这听起来可能有点疯狂 但请看一下我下面的函数 以便更好地了解我想说的内容 class Post extends Eloquent
  • 寻找对我的线程安全、无锁队列实现的批评

    因此 经过一番研究后 我写了一个队列 它使用固定大小的缓冲区 因此它是一个循环队列 它必须是线程安全的 我已经尝试使其成为无锁的 我想知道它出了什么问题 因为这些事情我自己很难预测 这是标题 template
  • 如何从 jpeg 或 png 格式的字节数组在画布上绘制图像

    就像标题所说 我有一个表示图像内容的字节数组 可以是 jpeg 或 png 我想将其绘制在常规画布对象上
  • Application.Run() 和 Form.ShowDialog() 有什么区别?

    在我的应用程序中 我想首先显示登录表单 如果登录成功则显示主表单 目前我正在做这样的事情 var A new LoginForm if A ShowDialog DialogResult OK Application Run new Mai
  • Django 表单错误。没有任何 html 标签时出现错误

    我想在我的模板上获取非 html 版本的表单错误 默认情况下 错误被总结为 ul class errorlist 我想避免 无论如何 在不进行大量代码更改的情况下做到这一点 Django 1 7 中有两种新方法也可用于解决此问题 Form
  • 使用“__import__”从字符串变量导入模块给出的结果与普通导入语句不同

    我正在为嵌套 matplotlib MPL 库编写文档 个人 该库与 MPL 自己提供的文档不同 由感兴趣的子模块包提供 我正在编写 Python 脚本 希望能够在未来的 MPL 版本中自动生成文档 我选择了感兴趣的子模块 包 并希望列出它