这个问题之前已被问过 1000 次,但似乎对我不起作用。
使用Python3.9和VScode,尽管我已经测试过它也可以在Mac上使用纯文本编辑应用程序进行编辑。
我克隆了这个存储库:https://github.com/trevorbayless/cli-chess,我想自定义它。
我通过终端运行它: $ python3 .../__main__.py
一切正常。以下是 __main__.py 的内容
from cli_chess.core.main import MainModel, MainPresenter
def main() -> None:
"""Main entry point"""
MainPresenter(MainModel()).run()
if __name__ == "__main__":
main()
我在 VScode 中打开项目,对源代码中的文件进行更改,但更改没有反映。仅反映对 __main__.py 的更改。我可以将 __main__.py 移动到另一个目录并毫无问题地运行该程序。我什至可以从我的计算机中删除除 __main__.py 之外的所有项目文件,并且仍然运行该程序,就好像我没有碰任何东西一样。
这对我来说仍然没有多大意义,但据我了解,这是由于Python中模块的处理方式所致,我需要重新加载它们。我无法让它工作。
我尝试过使用如下所示的 importlib 以及其他变体。似乎没什么区别。
import cli_chess.core.main
import importlib
importlib.reload(cli_chess.core.main)
from cli_chess.core.main import MainModel, MainPresenter
def main() -> None:
"""Main entry point"""
MainPresenter(MainModel()).run()
if __name__ == "__main__":
main()
我也看到过这些命令:
%reload_ext autoreload
%autoreload 2
我不明白如何使用它。 “只需将其添加到您的代码中”就会出现语法错误。
其他人建议重新启动 VScode。我退出,我重新打开,没有任何变化。我肯定错过了一些明显的东西,对吧?将一些打印语句放入一个相当基本的 python 项目中是多么困难,这有点让我震惊。
顺便说一下,trevorbayless 的道具,非常酷的国际象棋应用程序。
要“重新加载”模块,您只需删除模块对象,然后再次导入即可。像这样:
del module_name
import module_name
虽然我并不真正建议这样做。可能有更好的解决方案来解决您的问题,但如果您真的想“重新加载”模块,这是一个可能的解决方案。