Отсутствие импорта в Django REST Framework при использовании Docker

Недавно я впервые начал создавать проект с использованием Docker, поэтому мои знания не очень велики.

Когда я создаю venv с помощью python3 -m venv venv, и устанавливаю Rest Framework, все работает отлично, и у меня нет никаких проблем.

Но в моем проекте с Docker, я понятия не имею почему, но PyLance обнаруживает отсутствующие импорты с Django и Django REST.

enter image description here

Это действительно раздражает, также когда я делаю импорт из Django, он делает предложения:

enter image description here

Но он ничего не предлагает при импорте из REST

enter image description here

Кто-нибудь знает, как решить эту проблему? Я пробовал:

  • Открытие VSC в разных каталогах
  • Восстановление образа Docker

Все работает нормально, мой файл требований содержит REST Framework, поэтому он работает нормально. Все дело в этих бессмысленных отсутствующих модулях.

Вы открываете VSCode внутри контейнера? У меня такая же проблема при открытии файлов локально, потому что все установлено внутри контейнера. Чтобы решить эту проблему, попросите VSCode подключиться к вашему контейнеру. Затем откройте папку, в которой находится ваше приложение, в контейнере. VSCode потребуется немного времени, чтобы установить PyLance. Затем он спросит вас, хотите ли вы перезагрузить окно. После этого все в порядке. Весь процесс занимает от полминуты до минуты.

Правка: очевидно, что при подключении ваш контейнер должен быть поднят. После завершения работы выйдите из VSCode перед запуском docker compose down. В следующий раз поток будет таким: docker compose up. Когда все будет запущено, откройте VSCode. Он немедленно подключится к вашему контейнеру и откроет нужную папку, установит PyLance, перезагрузит окно, и все будет готово. Не перезапускайте и не выключайте контейнер с открытым VSCode. Он попытается переподключиться и потерпит неудачу, плюс откажется выходить из программы в моем случае. Выходите из VSCode перед перезагрузкой или выполнением docker compose down. YMMV.

Вернуться на верх