能否将Python模块重新加载为其他名称?

9 投票
4 回答
3027 浏览
提问于 2025-04-18 04:52

在使用解释器的时候,我希望能像这样做 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)

撰写回答