Импорт «Path.to.own.script» не может быть разрешен Pylance (reportMissingImports) в VS Code с использованием python 3.9x в Lubuntu 20.04.
С несколько месяцев назад, используя pylint до pylance:
Мой
python 3.9x
- скрипт (с использованием
VS Code
на
Lubuntu 20.04 LTS
) начинается со следующего импорта пользовательских "инструментов":
import sys
sys.path.append(
'/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts/'
)
import General.Misc.general_tools as tools
Теперь заявляет
Import "General.Misc.general_tools" could not be resolvedPylance (reportMissingImports)
даже если при выполнении модуль импортируется отлично.
Таким образом, чтобы обеспечить
Pylance
поймите, что это существующий путь к модулю в дополнение к
sys.path.append(..)
- подход, я добавил в - файл:
{
...
// Possible values: "Jedi", "Pylance", "Microsoft", "None".
"python.languageServer": "Pylance",
// NOTE on changing from microsoft to pylance language server: python.autoComplete.extraPaths --> python.analysis.extraPaths
// Docs: https://github.com/microsoft/pylance-release/blob/master/TROUBLESHOOTING.md#unresolved-import-warnings
"python.analysis.extraPaths": [
"/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts"
],
...
}
Тем не менее, я все еще получаю
reportMissingImports
-сообщение, даже если оно правильно импортируется.
Обходной путь, который я нашел здесь, работает хорошо (добавление
# type: ignore
к оператору импорта):
import General.Misc.general_tools as tools # type: ignore
Тем не менее, это всего лишь обходной путь, поэтому я ищу решение проблемы в корне. Технически это похожей ситуацией я столкнулсятот же обходной путь, который я использовал ранее, чтобы избавиться от похожих предупреждающих сообщений от
pylint
. Наверное, это что-то присущее
settings.json
- конфигурация, так как при использовании
VS-Code
здесь постоянный коэффициент.
ИЗМЕНИТЬ дополнительные меры, которые не решили проблему:
я добавил
export PYTHONPATH="$PYTHONPATH:/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts"
к моему
~/.bashrc
- файл, который позволяет мне теперь импортировать модуль прямо в
python
-оболочка из терминала без предыдущего
sys
-путь манипуляции. Однако это применимо только к глобальной системной среде Python, но не к любой виртуальной среде. Чтобы изменить там системный путь, я выполнил эти инструкции , в то время как моя конкретная виртуальная среда scrapy_course открыта, например:
(scrapy_course) andylu@andylu-Lubuntu-PC:~/$ add2virtualenv /home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts
Эта команда применяется к virtualenvwrapper, который аккуратно управляет виртуальными средами вместе с pyenv . Теперь я могу запустить вышеупомянутый скрипт в текущей среде даже без
sys.path.append(...)
перед импортом модуля, ЕЩЕ
pylance
по-прежнему не распознает пути правильно и показывает мне то же предупреждение, что и раньше.
10 ответов
Pylance, by default, includes the root path of your workspace. If you want to include other subdirectories as import resolution paths, you can add them using the setting for the workspace.
- In VS Code press +<,> to open Settings.
- Type in
python.analysis.extraPaths
- Select "Add Item"
- Type in the path to your library
'/home/andylu/Dokumente/Allgemeines_material/Sonstiges/Programming/Python/Scripts/'
Два метода ниже:
В коде VS вы можете редактировать
setting.json
файл. Если вы добавите"python.analysis.useImportHeuristic": true
ошибка линтинга будет удалена.Альтернатива - добавить
# type: ignore
в конце кода импорта.
Вот ссылка на github, по которой я получил указанное выше разрешение: https://github.com/microsoft/pylance-release/issues/68
У меня сработало:
python 3.9
,
VScode
,
windows10
По умолчанию python выбирает глобальный интерпретатор в качестве интерпретатора для любого вашего проекта python. Таким образом, разрешение модуля/пакета находится в глобальном контексте. Для любого линтера, который вы используете для получения установленных модулей, вы должны убедиться, что выбрали правильный интерпретатор.
Например, если вы когда-либо работали с pycharm, вам будет предложено выбрать интерпретатор и создать виртуальную среду с выбранным интерпретатором. То же самое, если вы запускаете проект в коде Visual Studio, он принимает глобальный интерпретатор в качестве интерпретатора по умолчанию, даже если вы создаете виртуальную среду. См. Это в левом нижнем разделе для выбранного интерпретатора.
Итак, как вы гарантируете, что Pylance/Pylint/читает модули, установленные в созданной виртуальной среде? Вам нужно проверить выбранный интерпретатор в левом нижнем углу, и если он не активирован в виртуальной среде, щелкните выбранный интерпретатор, и vs-code предложит вам выбрать интерпретатор по умолчанию для проекта. Выберите текущую виртуальную среду, и Visual Studio pylance прочитает модули в текущей среде. Надеюсь, это сработает для тех, кто борется с тем же
Я столкнулся с аналогичной проблемой, даже после того, как в моей системе были пакеты, VS Code Pylance не смог разрешить импорт.
В моем случае у меня было установлено 2 разные версии python (одна с использованием дистрибутива anaconda, а другая напрямую с python.org)
Исправление: выберите правильный интерпретатор Python в коде VS. Пилэнс перестанет жаловаться :)
Pylance по умолчанию является языковым сервером, используемым для проекта Python, если вы не укажете иное. Если вы получите
(reportMissingImports)
и вы уверены, что зависимость была успешно установлена, это означает, что она установлена где-то еще, чем ожидал Pylance. Обычно это происходит, если вы работаете с виртуальными средами.
Pylance по умолчанию выбирает системный интерпретатор Python для любого проекта Python, в этом случае вам нужно указать Pylance, где найти интерпретатор Python virtualenv, указав это в настройках vscode . Под
.vscode/settings.json
добавьте следующее:
{
"python.defaultInterpreterPath": "~/.pyenv/versions/3.10.2/envs/<my-virtual-env-name>/bin/python",
"python.linting.ignorePatterns": [
"**/site-packages/**/*.py"
],
}
Теперь Pylance будет точно знать, где искать установленную зависимость. В моем случае я использую
pyenv
но это может быть любой другой путь в зависимости от того, какой инструмент virtualenv вы используете. Если у вас есть другие зависимости в другом пользовательском расположении, вы можете добавить их, указав
"python.analysis.extraPaths"
:
{
"python.defaultInterpreterPath": "~/.pyenv/versions/3.10.2/envs/<my-virtual-env-name>/bin/python",
"python.linting.ignorePatterns": [
"**/site-packages/**/*.py"
],
"python.analysis.extraPaths": [
"my-custom-path-1/python/scripts",
"my-custom-path-2/something-else"
],
}
Другой вариант — добавить файл в корень проекта vscode. Например:
PYTHONPATH=src/mydir
Вы либо используете относительный путь, как указано выше, либо полный путь. Преимущество
.env
что это исправит оба
pylance
а также
pylint
в вскоде. И легче зафиксировать и поделиться на
git
чем
.vscode/settings.json
.
Я столкнулся с подобной проблемой и решил ее,
- Открытие командной палитры (Ctrl+Shift+P).
- Найдите и выберите Переводчик.
- Просмотрите и выберите виртуальную среду, с которой вы работаете,
- Перейдите в папку сценариев и выберите приложение Python.
и вуаля, все ваши желтые волнистые линии исчезают, как пердеж в воздухе. Цитата: Смотритель из ССР.
Если вы используете среду Anaconda, обходным путем является добавление пути к вашей личной библиотеке в «путь к библиотеке python» с помощью команды
conda develop path/to/your/module
.
В коде студии VS
- Откройте свою папку
- Щелкните правой кнопкой мыши рабочую область, где находятся все файлы или папки.
- Добавить папку в рабочую область
- Выберите каталог, в который вы ввели
sys.path.insert("DIRECTORY")
Добавьте это в свой settings.json в vscode:
"python.analysis.extraPaths": ["ml/py"],
это может быть относительный путь, основанный на корне вашего проекта, или абсолютный путь. Вы также можете иметь несколько из них.