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是个啥