imp.load_source 方法的第一个参数有什么作用?

2024-02-19

我正在阅读this https://stackoverflow.com/questions/67631/how-to-import-a-module-given-the-full-path关于从绝对路径导入模块的问题。答案建议使用以下代码:

import imp
foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()

我想从具有以下结构的目录导入文件(它是包):

__int__.py
model_params.py

我已经这样做了:

import01 = imp.load_source('module.name', '/home/wakatana/experiments/model_params/model_params.py')

现在我可以访问其中的变量model_params.py via import01.VARIABLE_NAME。看起来相当于import numpy as np. Where model_params.py就好像numpy and import01就好像np.

我想问一下第一个参数是什么load_source方法呢?help(imp)几乎什么也没说load_source方法,例如下列的help(imp.load_source)回报load_source(...)

Thanks

根据 behzad.nouri 评论进行编辑

在文档页面上加载源 https://docs.python.org/2/library/imp.html#imp.load_source据说:

name 参数用于创建或访问模块对象。

但是当我尝试访问时module.name我收到有关未定义模块的错误。另外为什么没有可以通过以下方式访问的文档help,我可以以某种方式安装它吗?我希望文档是 python 中代码本身的一部分,或者通常的做法是不内置它而是将其在线?


The 官方文档 https://docs.python.org/3.5/library/imp.html有关于该主题的更多信息。

基本上,您加载模块所使用的名称将在导入该模块的其他文件中使用。尽管没有module.name模块存在于 python 路径中的任何位置,如果您加载某个模块并为其指定名称,则其他模块会执行常规操作import使用该名称不会引发错误并按预期工作。也许一个小例子可以更好地说明这一点:

/tmp/测试/foo.py

value = 1337

/tmp/测试/bar.py

from foo.bar import value

def print_val():
    print value

/tmp/测试/run.py

import imp
foo = imp.load_source('foo.bar', '/tmp/test/foo.py')

import bar

bar.print_val()

正如预期的那样,你得到1337打印到屏幕上。如果名字不是foo.bar,导入将会失败bar.py因为实际上不存在这样的模块。

该方法实际上可以用于猴子修补,因为它会覆盖第 3 方模块内的导入。

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

imp.load_source 方法的第一个参数有什么作用? 的相关文章

随机推荐

  • 日期之间的月份差异[重复]

    这个问题在这里已经有答案了 可能的重复 月份差异 https stackoverflow com questions 1525990 difference in months Hi all 我们如何使用 LINQ 计算两个日期之间的月份差异
  • 如何以编程方式将网站添加到 Internet Explorer 11 兼容性列表?

    我尝试在以下位置添加注册表项 Hive HKEY CURRENT USER Key Path Software Policies Microsoft Internet Explorer BrowserEmulation PolicyList
  • 使用 jquery 获取 html5 的值

    前几天 我在 stackoverflow 中阅读答案 我读到 jquery 可以获取 html5 的值
  • memmove 实际上是否“移动”了一块内存并在源头留下了零? [复制]

    这个问题在这里已经有答案了 可能的重复 memcpy 与 memmove https stackoverflow com questions 4415910 memcpy vs memmove Does memmove http www c
  • github 存储库中的自定义语言

    Git 显示构成存储库的语言的百分比 然而 对于我的一个项目 我想使用我自己的自定义语言 我知道我可以创建一个 gitattributes 文件并放置 py linguist language Python使所有 py 文件被识别为 Pyt
  • 导入错误:没有名为“flask.ext”的模块[重复]

    这个问题在这里已经有答案了 当我像这样导入 Flask 扩展时 它工作正常 from flask module import Module 这样扩展就安装正确了 但每当我尝试像这样导入 Flask 扩展时 from flask ext mo
  • Webpack:未知属性“查询”?

    我正在练习使用 React 构建一个按钮 单击该按钮时计数器会加 1 我现在需要使用 Webpack 打包所有内容 以便可以在浏览器中运行它 我运行以下命令 webpack watch mode development 并得到以下错误 In
  • 全新安装时的 HDFS 空间使用情况

    我刚刚安装了 HDFS 并启动了该服务 并且已使用空间已经超过800MB 它代表什么 hdfs dfs df h Filesystem Size Used Available Use hdfs quickstart cloudera 802
  • Android 数据绑定:“使用‘.’的方法引用已弃用”

    在我的应用程序中使用数据绑定时 我在编译时收到以下警告 Warning Method references using is deprecated Instead of handler onItemClick use handler onI
  • 测试单元Spring boot:无法注册模拟bean

    我有两类测试 1 用于控制器类的单元测试 2 用于服务类的单元测试 如下所示 1 测试类控制器 RunWith SpringRunner class SpringBootTest AutoConfigureMockMvc public cl
  • 如何列出 JAR 的依赖项

    是否有一个工具可以列出包含 JAR 中引用的 第三方 类的第三方 包 假设它会从 JAR 文件定义中识别什么是 主 包 并且会打印出 JAR 中引用的第三方类的完全限定名称列表 最高可达第三级 org apache commons org
  • 使用 Tensorflow 可以实现增量学习吗?

    我正在尝试使用非常大的数据集 比我的记忆大得多 训练 Tensorflow 模型 为了充分利用所有可用的训练数据 我正在考虑将它们分成几个小 碎片 并一次在一个碎片上进行训练 经过一番研究 我发现这种方法通常被称为 增量学习 并基于这个维基
  • 我应该封装我的 IoC 容器吗?

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我正在尝试确定花费额外的精力来封装 IoC 容器是否有意义 经验告诉我 我应该在我的应用程序和任何第三方组件之间放置一层封装
  • 使用KafkaListener时,如何检查主题消息是否已读完?

    使用 KafkaListener时 如何检查主题消息是否已读完 See 这个答案 https stackoverflow com questions 55430893 how to check if kafka is empty using
  • 使用 * 和 & 比较值是否相等有什么区别?

    我想我在很高的水平上理解两者之间的区别 and Rust 中的内容与内存管理有关 下面的代码片段有什么区别 应用一种方法与另一种方法相比是否存在危险 for i item in bytes iter enumerate if item b
  • Spring JPA Projection 包括链接

    给定一个简单的 Event 模型 它具有一组 Booking 对象 Event Entity public class Event Id GeneratedValue strategy GenerationType AUTO private
  • 将 Google 字体与 Shadow DOM 结合使用 [重复]

    这个问题在这里已经有答案了 我正在尝试在内容脚本端的扩展中使用谷歌字体 我下载并从扩展目录加载的 Noto 字体可以工作 它也在 web accessible resources 中声明 并且在 ShadowDOM 中工作正常 但谷歌字体不
  • Maven 3/Mercury 的良好学习资源

    我一直在尝试了解有关 Maven 3 和 Mercury 的更多信息 Maven Mercury 是 Maven Artifact 子系统的替代品 并且完全替代现有传输的 HTTP HTTPS DAV DAVS 部分 目前似乎可用的实质性内
  • 点阵图条件填充颜色

    Problem 我有一个数据框 我想用lattice的面板点图 不是ggplot2 对其进行可视化 它包含一个变量 应有条件地使用该变量通过不同的颜色填充突出显示数据 可重现的例子 require lattice Make reproduc
  • imp.load_source 方法的第一个参数有什么作用?

    我正在阅读this https stackoverflow com questions 67631 how to import a module given the full path关于从绝对路径导入模块的问题 答案建议使用以下代码 im