Ошибка отладчика Django 4 Pycharm: не удается найти модуль __main__ в ''

Мой проект Django работает правильно, когда я нажимаю зеленую кнопку воспроизведения pycharm. Но когда нажимается кнопка отладки, он говорит 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.

Версия Джанго: 4.0.1

Версия Python: 3.8.6

PyCharm 2021.2 (версия для сообщества)

1 ответ

TL:DR — попробуйте обновить PyCharm

Возникла та же проблема с почти идентичными версиями Django, Python и PyCharm. Пробовал много способов решить эту проблему, но единственный способ, который работал, это... обновление PyCharm;) это проблема с venvДумаю, потому, что когда я менял интерпретатор на любой другой (например, из других проектов django), он работал с некоторыми из них, но не со всеми (хотя пакеты те же). Когда я копался очень глубоко с отладчиком, похоже, проблема заключалась в добавлении '-m'а также '__main__'в контейнер после этого '__spec__'атрибут. При использовании некоторых других venv ничего не добавлялось, кроме 'runserver'и работал нормально. Я хотел просто начать новый проект или воссоздать venv, но сначала я обновил PyCharm. Один перезапуск PyCharm и (не знаю как, но...) он начал нормально работать. И теперь он не добавляет никаких других параметров в args...

Другие вопросы по тегам