Visual Studio Code pylint: невозможно импортировать 'protorpc'

Я использую Pylint в Visual Studio Code для разработки API-интерфейса Cloud Endpoint для Google App Engine (GAE) в Python. Я не могу устранить ошибку ворса. Я не знаю, что вызвало ошибку, но, по- видимому, Pylint не может найти библиотеку protorpc?

enter image description here

Рекомендуемое исправление в Устранении неполадок Linting - настроить параметры рабочего пространства так, чтобы они указывали на полностью определенный исполняемый файл Python. Я сделал это, но ошибка ворса остается.

enter image description here

Сам protorpc установлен для:

~/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0/protorpc

... и содержит модуль remote.py который нельзя импортировать:

__init__.py             generate_python.py      protojson.py            transport.py
definition.py           google_imports.py       protourlencode.py       util.py
descriptor.py           message_types.py        registry.py             webapp
generate.py             messages.py             remote.py               wsgi
generate_proto.py       protobuf.py             static

Я добавил этот путь к $PYTHONPATH (вместе с раковиной):

export GOOGLE_CLOUD_SDK=~/google-cloud-sdk
export APPENGINE_PATH=$GOOGLE_CLOUD_SDK/platform/google_appengine

export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/lib
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/lib/googlecloudsdk
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/lib/googlecloudsdk/api_lib
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/platform/google_appengine/lib
export PYTHONPATH=$PYTHONPATH:$GOOGLE_CLOUD_SDK/platform/google_appengine/lib/protorpc-1.0/protorpc

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

Использование сторонних библиотек гласит:

Среда выполнения Python в стандартной среде включает стандартную библиотеку Python, библиотеки App Engine и несколько связанных сторонних пакетов.

Из-за этого я предположил, что "библиотеки App Engine" включают protorpc, но я не уверен. Более того, для добавления библиотеки фреймворков облачных конечных точек в пример API требуется только установить конечные точки google в каталог lib приложения:

pip install -t lib google-endpoints --extra-index-url=https://gapi-pypi.appspot.com/admin/nurpc-dev --ignore-installed

Суть в том, что я не думаю, что я что-то не установил, и я не думаю, что мне чего-то не хватает в моей (web) директории lib приложения.

Ответы

Ответ 1

Откройте файл настроек вашего кода Visual Studio (settings.json) и добавьте путь к библиотеке в список "python.autoComplete.extraPaths".

"python.autoComplete.extraPaths": [
    "~/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2",
    "~/google-cloud-sdk/platform/google_appengine",
    "~/google-cloud-sdk/lib",
    "~/google-cloud-sdk/platform/google_appengine/lib/endpoints-1.0",
    "~/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0"
],

Ответ 2

Изменение пути библиотеки работало для меня. Нажав Ctrl + Shift + P и набрав python interpreter и выбрав один из доступных показаний. Один из них был знаком (как указывал на virtualenv, который работал хорошо раньше), и это сработало. Обратите внимание на версию python, с которой вы работаете, либо 2.7, либо 3.x и выберите соответственно

Ответ 3

Я столкнулся с той же проблемой (VS Code). Решено методом ниже

1) Выберите команду "Интерпретатор" в палитре команд (Ctrl + Shift + P)

2) Поиск "Выберите переводчика"

3) Выберите установленный каталог python

Ссылка: - https://code.visualstudio.com/docs/python/environments#_select-an-environment

Ответ 4

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

Таким образом, я просто изменил pythonPath на python3 (по умолчанию: python):

"python.pythonPath": "python3"

Я переустановил зависимости (включая pylint !!!) с помощью

pip3 install <package> --user

... и после перезагрузки vs code все выглядело отлично.

HTH Kai

Ответ 5

Сначала я python3 путь python3 где он живет

enter image description here

А затем в настройках VS Code просто добавьте этот путь, например:

"python.pythonPath": "/usr/local/bin/python3"

Ответ 6

Я решил это, добавив библиотеку protorpc в переменную среды $PYTHONPATH. В частности, я указал на библиотеку, установленную в моем каталоге App Engine:

export PYTHONPATH=$PYTHONPATH:/Users/jackwootton/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0

После добавления в ~/.bash_profile, перезагрузки моего компьютера и кода Visual Studio ошибки импорта исчезли.

Для полноты я не изменял никаких настроек кода Visual Studio, относящихся к Python. Полный файл ~/.bash_profile:

export PATH=/Users/jackwootton/protoc3/bin:$PATH

export PYTHONPATH=/Users/jackwootton/google-cloud-sdk/platform/google_appengine

export PYTHONPATH=$PYTHONPATH:/Users/jackwootton/google-cloud-sdk/platform/google_appengine/lib/protorpc-1.0

# The next line updates PATH for the Google Cloud SDK.
if [ -f '/Users/jackwootton/google-cloud-sdk/path.bash.inc' ]; then source '/Users/jackwootton/google-cloud-sdk/path.bash.inc'; fi

# The next line enables shell command completion for gcloud.
if [ -f '/Users/jackwootton/google-cloud-sdk/completion.bash.inc' ]; then source '/Users/jackwootton/google-cloud-sdk/completion.bash.inc'; fi

Ответ 7

Значение по умолчанию для визуальной студии должно быть таким же, как и путь интерпретатора.

Изменение значения по умолчанию для VS-кода: windows: Файл> Настройки> Настройки

{
    "python.pythonPath": "C:\\Users\\Anaconda3\\pythonw.exe",
    "workbench.startupEditor": "newUntitledFile"
}

Найдите нужный интерпретатор: windows: Ctrl + Shift + P → выберите интерпретатор:

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

Ответ 8

Я все еще получал эти ошибки даже после подтверждения того, что из моего виртуального pylint использовались правильные python и pylint.

В конце концов я понял, что в коде Visual Studio я был А), открывая каталог моего проекта, то есть Б), где находилась моя виртуальная среда Python, но я был С), запуская основную программу Python с двух уровней глубже. Эти три вещи должны быть синхронизированы, чтобы все работало.

Вот что я бы порекомендовал:

  1. В Visual Studio Code откройте каталог, содержащий вашу основную программу Python. (Это может быть или не быть верхним уровнем каталога проекта.)

  2. Выберите меню "Терминал"> "Новый терминал" и создайте виртуальную среду прямо в том же каталоге.

    python3 -m venv env
    
  3. Установите Pylint в виртуальной среде. Если вы выберете какой-либо файл Python на боковой панели, Visual Studio Code предложит вам это сделать. Кроме того, source env/bin/activate pip install pylint затем pip install pylint.

  4. В синей нижней панели окна редактора выберите интерпретатор Python env/bin/python. Или перейдите в "Настройки" и установите "Python: Python Path". Это устанавливает python.pythonPath в Settings.json.

Ответ 9

Для вашего случая добавьте следующий код в vscode settings.json.

"python.linting.pylintArgs": [
    "--init-hook='import sys; sys.path.append(\"~/google-cloud-sdk/platform/google_appengine/lib\")'"
]

Для тех, у кого проблемы с пип-пакетами, вы можете пойти с

"python.linting.pylintArgs": [
    "--init-hook='import sys; sys.path.append(\"/usr/local/lib/python3.7/dist-packages\")'"
]

Вы должны заменить python3.7 выше на вашу версию Python.