问题描述
带有 Python 3.4.2 的 Python 控制台
我在 PyCharm 社区版 4.5.4 的 Python 控制台中定义了一个模块中正确运行的函数:
重载测试.py:
def reloadtest(x):print("版本 A:{}".format(x))
Python 控制台:
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32>>>从重载测试导入重载测试>>>重新加载测试(1)版本 A:1
在我将函数修改为版本 B"后,PyCharm 找不到更改,并且 importlib.reload(ReloadTest)
给我错误.
每次修改模块时,我都必须重新加载 Python 控制台或重新启动 PyCharm.我做错了什么?处理这个问题的最佳方法是什么?
ReloadTest.py:
def reloadtest(x):print("版本 B: {}".format(x))
Python 控制台:
>>>重新加载测试(1)版本 A:1>>>从重载测试导入重载测试>>>重新加载测试(1)版本 A:1>>>导入导入库>>>importlib.reload(重载测试)回溯(最近一次通话最后):文件<input>",第 1 行,在 <module>NameError:未定义名称ReloadTest">>>从重载测试导入重载测试>>>重新加载测试(1)版本 A:1>>>导入重载测试>>>重新加载测试(1)版本 A:1让它工作!
我应该导入整个模块import Module
,而不是from Module import function
,然后通过Module.function()
调用该函数.这是因为
从 ReloadTest 导入 reloadtest
和
importlib.reload(ReloadTest)
不能一起去.
>>>导入重载测试>>>ReloadTest.reloadtest(1)版本 A:1修改后:
>>>importlib.reload(重载测试)<模块'ReloadTest'来自'C:\...\ReloadTest.py'>>>>ReloadTest.reloadtest(2)版本 B:2Python Console with Python 3.4.2
I defined a function in a module which runs correctly in Python Console in PyCharm Community Edition 4.5.4:
ReloadTest.py:
def reloadtest(x):
print("Version A: {}".format(x))
Python Console:
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32
>>> from ReloadTest import reloadtest
>>> reloadtest(1)
Version A: 1
After I modified the function to "Version B", PyCharm can't find the change, and importlib.reload(ReloadTest)
gives me error.
I must reload the Python Console or restart PyCharm every time I modify a module. What did I do wrong? What is the best way to handle this?
ReloadTest.py:
def reloadtest(x):
print("Version B: {}".format(x))
Python Console:
>>> reloadtest(1)
Version A: 1
>>> from ReloadTest import reloadtest
>>> reloadtest(1)
Version A: 1
>>> import importlib
>>> importlib.reload(ReloadTest)
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'ReloadTest' is not defined
>>> from ReloadTest import reloadtest
>>> reloadtest(1)
Version A: 1
>>> import ReloadTest
>>> reloadtest(1)
Version A: 1
Get it to work!
Instead of from Module import function
, I should import the whole module import Module
, then call the function by Module.function()
. This is because
from ReloadTest import reloadtest
and
importlib.reload(ReloadTest)
can't go together.
>>> import ReloadTest
>>> ReloadTest.reloadtest(1)
Version A: 1
After making changes:
>>> importlib.reload(ReloadTest)
<module 'ReloadTest' from 'C:\...\ReloadTest.py'>
>>> ReloadTest.reloadtest(2)
Version B: 2
这篇关于更改后如何重新加载模块?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!