Python3 - 不能在 __import__ 对象上调用 reload()?

Posted

技术标签:

【中文标题】Python3 - 不能在 __import__ 对象上调用 reload()?【英文标题】:Python3 - reload() can not be called on __import__ object? 【发布时间】:2013-08-17 10:50:49 【问题描述】:

好吧,由于多种原因,我在 Python2 中使用 s = __import__('parse') 的时间最长,现在我有点需要为某些项目过渡到 Python3(主要是由于 SSL)。

但据我所知,Python3 中没有 reload() 等价物。 只有一种选择:

import parse
parse.reload() #works

但我真的,真的需要这个来工作:

parse = __import__('parse')
parse.reload()

reload(parse)

关于如何让它在 Python3 中工作的任何想法?

【问题讨论】:

我觉得我找到了 -.- import imp && imp.reload(parse)? from imp import reload Reloading module giving NameError: name 'reload' is not defined的可能重复 【参考方案1】:

reload 内置函数已移至 Python 3.4 中的 importlib 模块:

In [18]: from importlib import reload

In [19]: reload?
Reload the module and return it.

The module must have been successfully imported before.

正如 @JPaget 在 cmets 中指出的那样,reload() 函数已从 Python 3.4+ 中的 imp 模块移至 importlib 模块。来自what's new in Python 3.4:

reload() 函数已从 imp 移至 importlib,作为 imp 模块弃用

【讨论】:

从 Python 3.4 开始,不推荐使用 imp。改用 importlib:from importlib import reload

以上是关于Python3 - 不能在 __import__ 对象上调用 reload()?的主要内容,如果未能解决你的问题,请参考以下文章

[Python]解决python3中关于import的疑难杂症

from __future__ import print_function的作用

把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功的解决方案

from __future__ import print_function是个啥

Python学习from __future__ import print_function用法

${__setProperty(row,rowNum)};不能在import XXX后面使用;