GVKun编程网logo

如何在Python中重新加载模块的功能?(如何在python中重新加载模块的功能设置)

24

最近很多小伙伴都在问如何在Python中重新加载模块的功能?和如何在python中重新加载模块的功能设置这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展IPython中模块的自动重

最近很多小伙伴都在问如何在Python中重新加载模块的功能?如何在python中重新加载模块的功能设置这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展IPython中模块的自动重新加载、Python-如何卸载(重新加载)模块?、python3动态加载模块的方法实现、Python动态加载模块的3种方法等相关知识,下面开始了哦!

本文目录一览:

如何在Python中重新加载模块的功能?(如何在python中重新加载模块的功能设置)

如何在Python中重新加载模块的功能?(如何在python中重新加载模块的功能设置)

跟进有关重新加载模块的问题,如何从已更改的模块重新加载特定功能?

伪代码:

from foo import bar

if foo.py has changed:
    reload bar

IPython中模块的自动重新加载

IPython中模块的自动重新加载

有没有办法让 IPython 自动重新加载所有更改的代码?在每行在 shell 中执行之前或在特别要求时失败。我正在使用 IPython 和 SciPy
进行大量探索性编程,每当我更改每个模块时都必须手动重新加载它是一件很痛苦的事情。

Python-如何卸载(重新加载)模块?

Python-如何卸载(重新加载)模块?

如何解决Python-如何卸载(重新加载)模块??

你可以使用reload内置函数重新加载已导入的模块:

from importlib import reload  # Python 3.4+ only.
import foo

while True:
    # Do some things.
    if is_changed(foo):
        foo = reload(foo)

在Python 3中,reload已移至imp模块。在3.4中,imp不推荐使用importlib,而reload在中添加了。当定位到3或更高版本时,在调用reload或导入时参考相应的模块。

我认为这就是你想要的。诸如Django开发服务器之类的Web服务器都使用此服务器,这样你就可以看到代码更改的效果,而无需重新启动服务器进程本身。

引用文档:

重新编译python模块的代码并重新执行模块级代码,从而定义了一组新对象,这些对象绑定到模块字典中的名称。扩展模块的init函数不会被第二次调用。与Python中的所有其他对象一样,旧对象仅在其引用计数降至零后才被回收。模块名称空间中的名称将更新为指向任何新的或更改的对象。对旧对象的其他引用(例如模块外部的名称)不会反弹以引用新对象,并且如果需要的话,必须在出现它们的每个命名空间中进行更新。

正如你在问题中指出的那样,Foo如果Foo类驻留在foo模块中,则必须重构对象。

解决方法

我有一台运行时间较长的Python服务器,并且希望能够在不重新启动服务器的情况下升级服务。最好的方法是什么?

if foo.py has changed:
    unimport foo  <-- How do I do this?
    import foo
    myfoo = foo.Foo()

python3动态加载模块的方法实现

python3动态加载模块的方法实现

需求

我们有时写了一个功能,需要不断地调整,但是已经在线上了,而且在执行任务, 这时要更新上去源文件,而不能结束掉当前进程,怎么办?

所以这时,我们需要动态地加载py文件了. 实现示例代码方式如下:

while 1:
    if "UI.fun" in sys.modules:
        del(sys.modules["UI.fun"])
    exec("import UI.fun")
    UI.fun.echo("aa")
    time.sleep(2)

解释相关的技巧

sys.modules 里面有所有已经加载了的模块的名称,所以我们要先删除这个模块 exec("import UI.fun") 再执行加载的动作

Python动态加载模块的3种方法

Python动态加载模块的3种方法

1、使用系统函数__import_()

复制代码 代码如下:

stringmodule = __import__('string')

2、使用imp 模块

复制代码 代码如下:

import imp
stringmodule = imp.load_module('string',*imp.find_module('string'))

3、使用exec

复制代码 代码如下:

import_string = "import string as stringmodule"
exec import_string

今天关于如何在Python中重新加载模块的功能?如何在python中重新加载模块的功能设置的讲解已经结束,谢谢您的阅读,如果想了解更多关于IPython中模块的自动重新加载、Python-如何卸载(重新加载)模块?、python3动态加载模块的方法实现、Python动态加载模块的3种方法的相关知识,请在本站搜索。

本文标签:

上一篇如何在Python 2.7中使用“ setup.cfg”代替setup.py(python中的setup怎么用)

下一篇如何编写setup.py以包括git repo作为依赖项