gpt4 book ai didi

Python:重新加载使用 'from X import Y' 导入的组件 Y?

转载 作者:IT老高 更新时间:2023-10-28 21:32:43 26 4
gpt4 key购买 nike

在 Python 中,一旦我使用 import X 在解释器 session 中导入了模块 X,并且模块在外部发生更改,我可以使用 reload(X)< 重新加载模块。然后,这些更改将在我的口译员 session 中可用。

我想知道当我使用 from X import Y 从模块 X 导入组件 Y 时这是否也可能。

语句 reload Y 不起作用,因为 Y 本身不是模块,而只是模块内的一个组件(在本例中为类)。

是否有可能在不离开解释器 session (或导入整个模块)的情况下重新加载模块的各个组件?

编辑:

为了澄清,问题是关于从 模块 X 导入 类或函数 Y 并在更改时重新加载,而不是从包 X 中重新加载模块 Y。

最佳答案

回答

根据我的测试,标记的答案(暗示一个简单的 reload(X))不起作用。

据我所知,正确答案是:

from importlib import reload # python 2.7 does not require this
import X
reload( X )
from X import Y

测试

我的测试如下(Python 2.6.5 + bpython 0.9.5.2)

X.py:

def Y():
print "Test 1"

bpython:

>>> from X import Y
>>> print Y()
Test 1
>>> # Edit X.py to say "Test 2"
>>> print Y()
Test 1
>>> reload( X ) # doesn't work because X not imported yet
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'X' is not defined
>>> import X
>>> print Y()
Test 1
>>> print X.Y()
Test 1
>>> reload( X ) # No effect on previous "from" statements
>>> print Y()
Test 1
>>> print X.Y() # first one that indicates refresh
Test 2
>>> from X import Y
>>> print Y()
Test 2
>>> # Finally get what we were after

关于Python:重新加载使用 'from X import Y' 导入的组件 Y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com