有没有办法在同一个python会话中两次加载一个模块?
用一个例子填补这个问题:这是一个模块:
模版
x = 0
现在,我想两次导入该模块,例如创建一个类的两个实例以实际具有的两个副本x
。
要已经回答评论中的问题,“如果有人只要创建一个带有x
变量的类,为什么有人会想这样做”:
您是正确的,但是存在大量的源,必须重写,并且两次加载一个模块将是一个快速修复^^。
是的,您可以两次加载一个模块:
import mod
import sys
del sys.modules["mod"]
import mod as mod2
现在,mod
和mod2
是同一模块的两个实例。
也就是说,我怀疑这是否有用。改用类-最终将减少工作量。
编辑 :在Python 2.x中,您还可以使用以下代码“手动”导入模块:
import imp
def my_import(name):
file, pathname, description = imp.find_module(name)
code = compile(file.read(), pathname, "exec", dont_inherit=True)
file.close()
module = imp.new_module(name)
exec code in module.__dict__
return module
此解决方案可能比第一个更灵活。由于(部分地)滚动了自己的导入机制,因此您不再需要“与之抗衡”。(注意,此实现不设置__file__
,__path__
和__package__
模块的属性-
如果这些都需要,只是添加代码来设置它们)
问题内容: 我有一台运行时间较长的Python服务器,并且希望能够在不重新启动服务器的情况下升级服务。最好的方法是什么? 问题答案: 你可以使用reload内置函数重新加载已导入的模块: 在Python 3中,已移至imp模块。在3.4中,不推荐使用importlib,而在中添加了。当定位到3或更高版本时,在调用reload或导入时参考相应的模块。 我认为这就是你想要的。诸如Django开发服务器
问题内容: 我有一个运行时间较长的Python服务器,并且希望能够在不重新启动服务器的情况下升级服务。最好的方法是什么? 问题答案: 您可以使用reload内置函数(仅适用于Python 3.4+)重新导入已导入的模块: 在Python 3中,已移至模块。在3.4中,imp不推荐使用,而reload在中添加了。当定位到3或更高版本时,在调用reload或导入时参考相应的模块。 我认为这就是您想要的
我的spring ApplicationContext文件正在加载两次。这是使用标准的maven webapp结构,只有一个web.xml。只有一个上下文文件,并且只定义了一个servlet。没有Context-Loader-Listener。 我尝试了以下方法来解决此问题 标准命名约定('test-servlet.xml') 使用不同的上下文文件定义ContextLoaderListener-不
问题内容: 当我尝试在小程序中同时播放两个声音时,它将不起作用。我正在使用s。甚至可以在小程序中同时播放两个声音吗? 问题答案: 从Java 1.3+开始,请使用Java Sound API 的类。它类似于基于applet的类,但更好。 EG改编自Java声音信息上显示的EG。
问题内容: 我试图将两个数组排列在一起,结果总是不正确。我将向您展示我的代码,获得的结果以及正在寻找的结果。 我想我只是做错了,但不确定其他方法。 我的代码: 结果:(缩短以节省空间) 我正在寻找的结果如下: 问题答案: 问题 嗯,问题当然出在您嵌套的foreach循环上。因为对于数组的每个元素,您都循环遍历整个数组(所以总共有* 次迭代)。 解决方案 为了解决这个问题,您必须一次遍历两个数组。
问题内容: 给定以下目录结构: 您可以看到 my-project 和 module-x 都需要React。我对这个问题有同样的问题,但建议是从package.json依赖项中删除反应。我这样做了,只要在 module-x中 没有安装node_modules,它就可以正常工作,因为Webpack将使用 my-project中的 React 。但是,如果我正在开发 module-x 并已安装node_