Ошибка "неразрешенного импорта" в коде Visual Studio

Я использую следующую настройку

  • MacOS Mojave
  • Python 3.7.1
  • Visual Studio Code 1.30
  • Пилинт 2.2.2
  • Джанго 2.1.4

Я хочу использовать linting, чтобы сделать мою жизнь немного проще в коде Visual Studio, однако, каждый мой импорт говорит о "неразрешенном импорте". Даже при импорте django по умолчанию (т.е. из моделей импорта django.db).

Я предполагаю, что это потому, что он не видит файлы Python виртуальной среды.

Все работает просто отлично, но это начинает раздражать.

У меня есть выбор интерпретатора - все системные версии python. Кажется, он вообще не видит моего виртуального окружения python (он не находится в том же каталоге, что и мое рабочее пространство, поэтому эта часть имеет смысл).

Если я устанавливаю python.PythonPath в файле settings.json, он просто игнорирует его и не указывает путь к моей виртуальной среде в качестве опции. Я также попытался настроить его в моих глобальных настройках Python, но он также не отображается.

Кто-нибудь сталкивался с этой проблемой и знает быстрое решение, чтобы заставить его работать?

Спасибо, JAC

Ответ 2

Этот вопрос уже был открыт на GitHub: https://github.com/Microsoft/vscode-python/issues/3840. Есть два очень полезных ответа от MagnuesBrzenk и SpenHouet.

Лучшее решение на данный момент - это создать файл .env в корневой папке вашего проекта. Затем добавьте PYTHONPATH к нему так:

PYTHONPATH=YOUR/MODULES/PATH

и в настройках .json добавь

"python.envFile": ".env"  

Ответ 3

Если у вас есть этот код в вашем файле settings.json, удалите его

{    
    "python.jediEnabled": false
}

Ответ 4

Альтернативный способ: используйте командный интерфейс!

cmd/ctrl + shift + p> Python: Select Interpreter> выберите тот, в котором вы ищите пакеты

enter image description here

Ответ 8

Ничто из вышеперечисленного не помогло мне. Однако добавление обеих строк ниже в мой файл settings.json помогло.

"python.analysis.disabled": [ 
    "unresolved-import"
],
"python.linting.pylintArgs": ["--load-plugin","pylint_protobuf"] 

Первая строка действительно скрывает ошибку линтинга. Конечно, не постоянное решение, но снимает загромождение с экрана.

Этот ответ дал мне вторую строку: VS Code PyLint Ошибка E0602 (неопределенная переменная) с скомпилированной структурой Python ProtoBuf

Может быть, кто-то, кто понимает Python больше, чем я, может объяснить это еще раз.

Ответ 9

У меня есть другое решение: мой экземпляр VSCode обнаружил virtualenv, хранящийся в .venv, но использовал неправильный двоичный файл Python. Он использовал .venv/bin/python3.7; используя переключатель в синей строке состояния, я изменил его на использование .venv/bin/python и все мои .venv/bin/python импорта были решены правильно. Я не знаю, что делает VSCode за кулисами, когда я делаю это, и не понимаю, почему это вызывало мою проблему, но для меня это было несколько более простым решением, чем редактирование настроек рабочего пространства. Надеюсь, это кому-нибудь поможет.

Ответ 10

Это работает для меня:

Откройте командную палитру (Ctrl-Shift-P) и выберите "Python: Select Interpreter". Делая это, вы устанавливаете интерпретатор Python в VSCode

Ответ 11

Решение от @Shinebayar G сработало, но другое более элегантно:

Скопировано из https://github.com/Microsoft/vscode-python/issues/3840#issuecomment-463789294:

Приведен следующий пример структуры проекта:

  • workspaceRootFolder
    • .vscode
    • ... другие папки
    • codeFolder

Что я сделал, чтобы решить эту проблему:

  1. Перейдите в папку рабочей области (здесь workspaceRootFolder) и создайте файл .env
  2. В этом пустом файле .env добавьте строку PYTHONPATH = codeFolder (замените codeFolder на имя вашей папки)
  3. Добавьте "python.envFile": "$ {workspaceFolder}/. Env" в файл settings.json
  4. Перезапустите код VS

Ответ 12

Incase of pylint error установите следующее

pipenv install pylint-django

Затем создайте файл .pylintrc в корневой папке и напишите следующее

load-plugins=pylint-django

Ответ 13

Мое решение. Это решение только для текущего проекта.

  1. В корневой папке проекта создайте папку .vscode
  2. Затем создайте файл .vscode/settings.json
  3. в файле setting.json добавьте строку (это для python3)
{
    "python.pythonPath": "/usr/local/bin/python3",
}
  1. Это пример для Python 2
{
    "python.pythonPath": "/usr/local/bin/python",
}
  1. Если вы не знаете, где находится ваш питон, просто запустите на терминале команду which python или which python3, которая напечатает местоположение питона.

  2. Этот пример работает для Dockerized Python - Django.

Ответ 14

Я исправил ошибку импорта по CTRL+Shift+P введите Настройки предпочтений и выберите опцию Preferences Open Settings (JSON) и добавьте строку "python.pythonPath": "/usr/bin/" Так что JSON должен выглядеть как

{
    "python.pythonPath": "/usr/bin/"
}

Сохраните другие строки конфигурации, если они есть. Это должно импортировать все модули, которые вы установили, используя PIP для автозаполнения.

Ответ 15

Мое решение состояло в том, чтобы открыть vscode в предыдущем каталоге.