能否将Python模块重新加载为其他名称?
在使用解释器的时候,我希望能像这样做 reload(foo) as f
,虽然我知道这不可能。就像我可以用 import foo as f
一样,有没有什么办法可以做到呢?
我在用 Python 2.6
谢谢!
4 个回答
0
imp
模块让你可以更深入地了解Python的导入机制,你可以导入任何源文件(也就是说,它不一定要在你的路径中)。
比如:
anyname = imp.load_source("SOME NAME", FILEPATH)
1
import foo
f = reload(foo)
如果我理解你的问题没错,这个方法应该有效。
如果你其实不需要重新加载这个库的话,可以按照Martijn的建议,直接重新赋值给foo就可以了。
f = foo
4
Python 3 的回答
正如其他人所说的,你只需要用你之前用作别名的名字重新加载就可以了。不过,由于在 Python 3 中,imp
已经不推荐使用了,所以现在应该用 importlib
来做这件事。假设你最开始的导入是这样写的:
import fullLibName as aliasName
那么要重新加载这个别名,你可以这样做:
importlib.reload(aliasName)
或者(更标准的用法):
from importlib import reload
...
reload(aliasName)
13
如果你一开始是用 import foo as f
这种方式导入的,那么重新加载的时候可以用 reload(f)
。