3

当我按下 pycharm 的绿色播放按钮时,我的 Django 项目工作正常。但是当点击调试按钮时,它会显示can't find '__main__' module in ''.

我做了一点 RCA,发现在使用调试选项运行时__spec__正在设置。__main__

这是来自的相关代码/lib/python3.8/site-packages/django/utils/autoreload.py

# __spec__ is set when the server was started with the `-m` option,
# see https://docs.python.org/3/reference/import.html#main-spec
# __spec__ may not exist, e.g. when running in a Conda env.
if getattr(__main__, '__spec__', None) is not None:
    spec = __main__.__spec__
    if (spec.name == '__main__' or spec.name.endswith('.__main__')) and spec.parent:
        name = spec.parent
    else:
        name = spec.name
    args += ['-m', name]
    args += sys.argv[1:]

请帮助我找到解决方法以使用 PyCharm 的调试功能。

Django 版本:4.0.1

Python版本:3.8.6

PyCharm 2021.2(社区版)

4

1 回答 1

4

TL:DR - 尝试更新 PyCharm

遇到了同样的问题,Django、Python 和 PyCharm 的版本几乎相同。尝试了很多方法来解决它,但唯一有效的方法是......更新 PyCharm;)venv我认为这是一个问题,因为当我将解释器更改为任何其他(例如来自其他 django 项目)时,它可以使用其中一些,但不是全部(尽管相同的包)。当我用调试器深入挖掘时,看起来问题是在这个属性之后添加'-m''__main__'args容器中。'__spec__'使用其他一些 venv 并没有添加任何东西,除了'runserver'并且工作正常。我想简单地开始新项目或重新创建 venv,但首先我已经更新了 PyCharm。重新启动 PyCharm 并且(我不知道如何,但是......)它开始正常工作。现在它没有向args...添加任何其他参数

于 2022-01-17T21:24:23.790 回答