Lon*_*ice 154 python python-3.x
我正在尝试重新加载我已经在Python 3中导入的模块.我知道你只需要导入一次并import再次执行命令就不会做任何事情.
执行reload(foo)是给出这个错误:
Traceback (most recent call last):
File "(stdin)", line 1, in (module)
...
NameError: name 'reload' is not defined
Run Code Online (Sandbox Code Playgroud)
错误是什么意思?
Ale*_*lli 231
reload 是Python 2内置的,但在Python 3中没有,因此您所看到的错误是预期的.
如果你真的必须在Python 3中重新加载一个模块,你应该使用:
importlib.reload 适用于Python 3.4及以上版本imp.reload对于Python 3.0到3.3(自Python 3.4以来不赞成使用importlib)Kev*_*vin 81
对于> = Python3.4:
import importlib
importlib.reload(module)
Run Code Online (Sandbox Code Playgroud)
对于<= Python3.3:
import imp
imp.reload(module)
Run Code Online (Sandbox Code Playgroud)
对于Python2.x:
使用内置reload()功能.
reload(module)
Run Code Online (Sandbox Code Playgroud)
小智 48
import imp
imp.reload(script4)
Run Code Online (Sandbox Code Playgroud)
Joe*_*elm 36
要扩展以前编写的答案,如果您想要一个适用于Python版本2和3的单个解决方案,您可以使用以下内容:
try:
reload # Python 2.7
except NameError:
try:
from importlib import reload # Python 3.4+
except ImportError:
from imp import reload # Python 3.0 - 3.3
Run Code Online (Sandbox Code Playgroud)
All*_*leo 11
我建议使用以下代码片段,因为它适用于所有python版本(需要six):
from six.moves import reload_module
reload_module(module)
Run Code Online (Sandbox Code Playgroud)
对于 python2 和 python3 兼容性,您可以使用:
# Python 2 and 3
from imp import reload
reload(mymodule)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123243 次 |
| 最近记录: |