Автозаполнение Python в удаленном контейнере vscode

Я использую importmagic расширения vscode, которое отлично работает, когда не работает в удаленном контейнере. В удаленном контейнере я не вижу свои собственные классы и функции в качестве предложений для автозаполнения.

Я пробовал добавить

        "python.autoComplete.extraPaths": [
            "${workspaceFolder}",
        ],

к настройкам в devcontainer.json, где workspaceFolder=/app. Если я установлю ${workspaceFolder}/module, это даст мне предложения для базовых модулей.

Например, у меня есть структура типа module/sub_module/sub_sub_module, и она предложит и автоматически добавит импорт, как from sub_module.sub_sub_module import ..., но module не включен в импорт, поэтому импорт не может быть разрешен.

Есть ли параметр, который мне не хватает, или почему он не может обнаружить базовый модуль при использовании только workspaceFolder в качестве extraPaths?


person sigholmjesper    schedule 24.06.2020    source источник


Ответы (2)


Измените Python-сервер в settings.json с Pylance или Microsoft или того, что вы используете - на Jedi

"python.languageServer": "Jedi"

Если честно, у меня не сработало ни одно решение, кроме этого.

Одно из решений - продолжать добавлять все пути к extraPaths, что звучит не очень хорошо. Вместо этого используйте сервер джедаев. Не нужно добавлять дополнительные пути, по умолчанию он использует каталог открытых файлов и папок для автозаполнения и анализа.

person hexr    schedule 30.08.2020
comment
Спасибо, @hexr, это помогло мне найти решение. Я установил его на «Джедай» и перестроил свой контейнер разработчика. Появилось предупреждающее сообщение. Поддержка IntelliCode Python требует использования Microsoft Python Language Server. Я нажал кнопку «Включить и перезагрузить окно». Он изменил его с джедая на Microsoft и вуаля. Я также попытался добавить строку в мой Dockerfile RUN pip install jedi и сбросить settings.json, чтобы использовать Jedi, но ничего. Я предполагаю, что это как-то связано с расширением Python VS Code, которое я использую. Его предоставляет Microsoft. Но теперь это работает для меня, поэтому я оставил MS. - person Tóth Krisztián Gyula; 08.12.2020

Вам необходимо убедиться, что расширения, установленные локально в vscode, также установлены в удаленном контейнере. В вашем случае расширение Python, которое позволяет использовать функции автозаполнения и многие другие, не установлено.

Попробуйте получить доступ к Preferences/Extensions и установить их вручную.

person Khalil Gorsan mestiri    schedule 22.07.2021