Visual Studio Code pylint: невозможно импортировать 'protorpc'
Я использую Pylint в Visual Studio Code для разработки API-интерфейса Cloud Endpoint для Google App Engine (GAE) в Python. Я не могу устранить ошибку ворса. Я не знаю, что вызвало ошибку, но, по- видимому, Pylint не может найти библиотеку protorpc
?
Рекомендуемое исправление в Устранении неполадок Linting - настроить параметры рабочего пространства так, чтобы они указывали на полностью определенный исполняемый файл Python. Я сделал это, но ошибка ворса остается.
Сам 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
где он живет
А затем в настройках 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 с двух уровней глубже. Эти три вещи должны быть синхронизированы, чтобы все работало.
Вот что я бы порекомендовал:
-
В Visual Studio Code откройте каталог, содержащий вашу основную программу Python. (Это может быть или не быть верхним уровнем каталога проекта.)
-
Выберите меню "Терминал"> "Новый терминал" и создайте виртуальную среду прямо в том же каталоге.
python3 -m venv env
-
Установите Pylint в виртуальной среде. Если вы выберете какой-либо файл Python на боковой панели, Visual Studio Code предложит вам это сделать. Кроме того, source env/bin/activate
pip install pylint
затем pip install pylint
.
-
В синей нижней панели окна редактора выберите интерпретатор 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.