`
nelson_tu
  • 浏览: 37620 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Python module的重新加载

 
阅读更多

pyDevconsole很好用,可以实时调试写的Python代码。但有个问题,发现代码问题,修改后无法重新加载。笨的方法就是关掉pyDev console,再重新打开。还好Python提供了reload函数,可以用来加载module。下面是自己写的2个简单的重新加载方法,通过类名(或对象)加载其所在的module,或通过module名加载:

def reload_by_class(clazz):
    try:
        module_name = clazz.__module__
        reload_by_module_name(module_name)
    except AttributeError:
        print('parameter must be class or object')

def reload_by_module_name(module_name):
    try:
        module =  sys.modules[module_name]
        reload(module)
        __import__(module_name)
    except KeyError:
        print('the module is not imported')
    except:
        print('reload failure')

 这里要注意,重新加载后:

1)需要重新import,才会使用新加载的module,否则依然使用原先的module

2)对新生成的对象有效,重新加载之前的对象保持不变。

下面是一个使用的例子:


1n刚开始del_note()输出的提示没有感叹号

2)修改代码,提示信息加上感叹号

3)再执行del_note(),输出的提示还是没有感叹号

4reload_by_class()重新加载module

5)新建n2对象,执行del_note(),输出的提示还是没有感叹号

6)重新import

7)新建n3对象,执行del_note(),输出的提示有感叹号了

  • 大小: 38.8 KB
分享到:
评论

相关推荐

    Python自动重新加载模块详解(autoreload module)

    主要介绍了Python自动重新加载模块详解(autoreload module),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Python如何重新加载模块

    你想重新加载已经加载的模块,因为你对其源码进行了修改。 解决方案 使用imp.reload()来重新加载先前加载的模块。举个例子: >>> import spam >>> import imp >>> imp.reload(spam) <module> >>> 讨论 重新加载模块...

    Python-FixIDAPython修复IDA加载IDAPython时出现的错误

    FixIDAPython - 修复IDA加载IDAPython时出现的错误

    python 动态加载的实现方法

    脚本语言都有一个优点,就是动态加载。lua语言有这个优点,python也有这个特性。说简单点就是,如果开发者发现自己的代码有bug,那么他可以在不关闭原来代码的基础之上,动态替换模块。替换方法一般用reload来完成。...

    Python-Module-LoadX-Booter:这是一个引导加载程序和模块加载程序python脚本,可用于使用预引导功能来引导程序! (可能包括壳元素)

    这是一个引导加载程序和模块加载程序python脚本,可用于使用预引导功能来引导程序! (可能包括壳元素) 下载 转到downlad文件夹,您可以使用未编译或已编译的文件! 然后使game_boot成为运行您的游戏的程序,并运行...

    pyautoreload:python重新加载模块

    重新加载指定模块 pyautoreload.reload_module(m) 加入模块 pyautoreload.import_str('a.b.c.d') 路径: /a/b/c 函数: d 删除模块 delete_str(m) 重新加载所有模块 reload_all() 重新加载模块,支持类及函数路径模式 ...

    python动态加载包的方法小结

    本文实例总结了python动态加载包的方法。分享给大家供大家参考,具体如下: 动态加载模块有三种方法 1. 使用系统函数__import_() stringmodule = __import__('string') 2. 使用imp 模块 import imp stringmodule ...

    Python实现动态加载模块、类、函数的方法分析

    本文实例讲述了Python实现动态加载模块、类、函数的方法。分享给大家供大家参考,具体如下: 动态加载模块: 方式1:系统函数__import__() 方式2:imp, importlib 模块 方式3:exec 函数 动态加载类和函数 首先...

    python+opencv 实现需要的 imutils库

    opencv需要的imutils库。pycharm无法加载时可以下载使用。亲测可用

    Trusted Pickle - Python module-开源

    TrustedPickle是一个Python模块,可让您创建和签名数据文件。 通过使用公共/专用密钥技术,此模块可保护您的用户免于加载他人可能声称您创建的恶意数据文件。 法律出口。

    python中import reload __import__的区别详解

    注意:多次重复使用import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引用到本地变量环境。 实例: pythontab.py  #!/usr/bin/env python #encoding: utf-8 import os print 'in pythontab',id...

    python-url-module-loader:用于通过 url 导入模块的 Python 库

    python-url-module-loader 用于通过 url 导入模块的 Python 库 要在签出此 repo 后测试相对导入,您需要将目录“example1”重命名为“xxx”,在这种情况下,“import example1.example2”将从 Internet 加载文件,...

    完美解决Python 2.7不能正常使用pip install的问题

    pip安装python包会加载我的用户目录,我的用户目录恰好是中文的,ascii不能编码。 解决办法是: python目录 Python27\Lib\site-packages 建一个文件sitecustomize.py 内容写: import sys sys.setdefaultencoding...

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

    1、使用系统函数__import_() 复制代码 代码如下: stringmodule = __import__(‘string’) 2、使用imp 模块 复制代码 代码如下: import imp stringmodule = imp.load_module(‘string... 您可能感兴趣的文章:python查看

    基于Python实现的手写数字识别系统源码+使用教程(毕业设计).zip

    基于Python实现的手写数字识别系统源码+使用教程(毕业设计).zip文件夹结构功能 1.文件夹 data:mnist手写数字数据集,包含训练、测试数据 parameters:神经网络训练结果保存路径 figure:该文档中的图片 2.文件 ...

    python跨文件使用全局变量的实现

    Python 定义了全局变量的特性,使用global 关键字修饰 global key_word 但是他的一大缺陷就是只能本module 中也就是本文件中使用,跳出这个module就不行。 try 1: 使用一个更宏观的思路,全局变量就用全局加载的...

    Python第一阶段笔记汇总.docx

    一 模块 Module 98 (一)定义: 包含一系列数据、函数、类的文件,通常以.py结尾。 99 (二)作用 99 (三)导入 99 (四) 模块变量 100 (五)加载过程 100 (六)分类 101 (七)搜索顺序 102 二 包package 102 (一)...

    详解Python中的相对导入和绝对导入

    前言 Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的。包内导入即是包内的模块导入包内部的模块... 如果是 import A,检查 sys.modules 中是否已经有 A,如果有则不加载,如果没有则为 A 创建 module 对

    Python importlib模块重载使用方法详解

    模块介绍 Python提供了importlib包作为标准库的一部分。...考虑到性能的原因,每个模块只被导入一次,放入字典sys.module中,如果你改变了模块的内容,你必须重启程序,python不支持重新加载或卸载之前导入的

Global site tag (gtag.js) - Google Analytics