python重新导入模块_交互时在python中重新导入模块

我知道可以做到,但是我不记得怎么做。

如何在python中重新导入模块? 场景如下:我以交互方式导入模块并对其进行修改,但随后遇到错误。 我修复了.py文件中的错误,然后想重新导入固定模块而不退出python。 我该怎么做 ?

#1楼

这应该工作:

reload(my.module)

重新加载先前导入的模块。 参数必须是模块对象,因此它必须已经成功导入。 如果您已使用外部编辑器编辑了模块源文件,并且想在不离开Python解释器的情况下尝试新版本,则这将非常有用。

如果运行Python 3.4及更高版本,请import importlib ,然后执行importlib.reload(nameOfModule) 。

不要忘记使用此方法的注意事项:

重新加载模块时,将保留其字典(包含模块的全局变量)。 名称的重新定义将覆盖旧的定义,因此这通常不是问题。 如果模块的新版本未定义旧版本定义的名称,则保留旧定义。

如果一个模块使用from ... import ...从另一个模块导入对象,则对另一个模块调用reload()不会重新定义从该模块导入的对象-解决该问题的一种方法是重新执行from语句,另一种方法是使用import名称和限定名称( module.*name* )。

如果模块实例化了一个类的实例,则重新加载定义该类的模块不会影响实例的方法定义-它们将继续使用旧的类定义。 派生类也是如此。

#2楼

在python 3中, reload不再是内置函数。

如果您使用的是python 3.4+,则应改用importlib库中的reload :

import importlib

importlib.reload(some_module)

如果您使用的是Python 3.2或3.3,则应:

import imp

imp.reload(module)

如果您使用的是ipython ,那么绝对可以考虑使用autoreload扩展名:

%load_ext autoreload

%autoreload 2

#3楼

实际上,在Python 3中,模块imp被标记为DEPRECATED。 好吧,至少对于3.4是正确的。

而是应使用importlib模块中的reload函数:

但是请注意,该库在最后两个次要版本中进行了一些API更改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值