如何在 Python 控制台中重新加载模块?

How do I reload a module in the Python console?

我正在使用 PyCharm 和 Python 3.7。在我的 Python 控制台中,如何重新加载我已更改的模块?我创建了一个文件 "services.py",其中我在

中创建了一个服务 class
class ArticlesService:
    def process(self):

当我在控制台中对此进行测试时,我似乎不知道如何重新加载它。这是我得到的错误

from mainpage.services import ArticlesService
importlib.reload(ArticlesService)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 140, in reload
    raise TypeError("reload() argument must be a module")
TypeError: reload() argument must be a module

如何引用我的 class 来重新加载它? (或者更好的是,如何让控制台自动重新加载我更改的所有内容?)

from mainpage.services import ArticlesService 仅将 class 导入您的命名空间,因此您没有对命名空间中模块的引用。来自 importlib.reload 文档:

Reload a previously imported module. The argument must be a module object, so it must have been successfully imported before.

所以如果你想稍后重新加载,请确保导入模块:

import importlib
import mainpage
from mainpage.services import ArticlesService

...

importlib.reload(mainpage)

这也应该有效:

import importlib
import mainpage.services
from mainpage.services import ArticlesService

...

importlib.reload(mainpage.services)