Ошибка отладчика 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
...