加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

不是从文件加载python模块

发布时间:2020-12-20 12:26:31 所属栏目:Python 来源:网络整理
导读:我在库中有一些 python代码试图从一个模块中加载一个简单的值,该模块将存在于使用该库的应用程序中 from somemodule import simplevalue 通常,使用该库的应用程序将具有模块文件,一切正常.但是,在此库的单元测试中,模块不存在.我知道我可以创建一个临时文件
我在库中有一些 python代码试图从一个模块中加载一个简单的值,该模块将存在于使用该库的应用程序中

from somemodule import simplevalue

通常,使用该库的应用程序将具有模块文件,一切正常.但是,在此库的单元测试中,模块不存在.我知道我可以创建一个临时文件并在运行时将该文件添加到我的路径中,但我很好奇是否有一种方法可以在python中将某些内容加载到内存中以允许上述导入工作.

这更像是一种好奇心,说“将模块添加到测试路径”是没有用的:P

解决方法

它是.使用types.ModuleType创建一个新的模块对象,然后将其添加到sys.modules:

sys.modules["somename"] = types.ModuleType("somename")

然后,您可以导入某个名称.如果需要向其中添加类或函数,请在调用测试脚本之前导入它,然后只需向其中添加函数:

def myfunc(x,y,z):
    ...

somename.myfunc = myfunc

不言而喻,但以防万一:这在很大程度上是学术上的好奇心.它有一些用于测试的用途,但除此之外,坚持以通常的方式导入东西.

顺便说一下,我怎么知道这个:我遇到了测试中使用的技术,在非Windows系统上为_winreg模块制作“存根”. Here it is在使用中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读