web-dev-qa-db-fra.com

Code pylint de Visual Studio: impossible d'importer 'protorpc'

J'utilise pylint dans code Visual Studio pour développer un moteur d'application Google (GAE) API de point de terminaison Cloud en Python . Je ne parviens pas à résoudre une erreur de peluche. Je ne sais pas ce qui cause l'erreur, mais à la conjecture, pylint ne trouve pas la bibliothèque protorpc?

enter image description here

Le correctif recommandé dans Dépannage de la charpie consiste à configurer les paramètres de l’espace de travail pour qu’il pointe vers un exécutable qualifié complet python. Je l’ai déjà fait, mais l’erreur de charpie demeure.

enter image description here

protorpc lui-même est installé pour:

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

... et cela contient le remote.py module qui ne peut pas être importé:

__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

J'ai ajouté ce chemin à $PYTHONPATH _ (avec le évier de cuisine ):

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

L'application s'exécute localement et également lorsqu'elle est déployée. Il semble donc s'agir simplement d'une erreur de peluches, mais il est frustrant de ne pouvoir résoudre le problème.

tilisation de bibliothèques tierces déclare:

Le moteur d'exécution Python dans l'environnement standard comprend la bibliothèque Python), les bibliothèques du moteur d'applications et quelques packages tiers fournis.

Pour cette raison, j'ai supposé que "les bibliothèques du moteur d'applications" inclut protorpc, mais je ne suis pas sûr. De plus, l'ajout de la bibliothèque Cloud Endpoints Frameworks à l'API exemple nécessite uniquement l'installation de google-endpoints dans le répertoire lib de l'application:

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

Ce que je veux dire, c'est que je ne pense pas avoir installé quelque chose et que rien ne me manque dans le répertoire lib de mon application (Web).

28
Jack

Ouvrez le fichier de paramètres de votre code Visual Studio (settings.json) et ajoutez le chemin de la bibliothèque au "python.autoComplete.extraPaths" liste.

"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"
],
11
Morad

Changer le chemin de la bibliothèque a fonctionné pour moi. Frappe Ctrl + Shift + P et en tapant python interpreter et en choisissant l’un des choix disponibles. L’un était familier (comme l’indiquait une machine virtuelle qui fonctionnait bien auparavant) et cela a fonctionné. Prenez note de la version de python avec laquelle vous travaillez, 2.7 ou 3.x et choisissez en conséquence

47
Ivan_ug

Je faisais face au même problème (Code VS). Résolu par la méthode ci-dessous

1) Sélectionnez la commande Interpreter dans la palette de commandes (Ctrl + Maj + P).

2) Recherchez "Interprète sélectionné"

3) Sélectionnez le répertoire installé python

Réf.: - https://code.visualstudio.com/docs/python/environments#_select-an-environment

21
SurajKj

Je n’ai pas joué avec toutes les possibilités, mais au moins j’ai eu l’impression que cela pourrait être un problème lié à la version python. Je ne sais pas pourquoi, j’ai fait confiance à mon instinct.

Ainsi, je viens de changer pythonPath en python3 (défaut: python):

"python.pythonPath": "python3"

J'ai réinstallé les dépendances (y compris pylint !!!) avec

pip3 install <package> --user

... et après le redémarrage de vs code, tout semblait aller bien.

HTH Kai

3
PapaKai

Je vais d'abord vérifier le python3 chemin où il vit

enter image description here

Et ensuite, dans les paramètres du code du VS, ajoutez simplement ce chemin, par exemple:

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

Pour votre cas, ajoutez le code suivant à settings.json.

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

Pour les autres qui ont des problèmes avec les paquets pip, vous pouvez aller avec

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

Vous devriez remplacer python3.7 ci-dessus avec votre version python).

2
wizawu

Le paramètre par défaut de Visual Studio doit être identique à celui du chemin de l’interprète.

Changer le réglage par défaut du code VS: Windows: Fichier> Préférences> Paramètres

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

Trouvez le bon interprète: windows: Ctrl+Shift+P-> sélectionner l'interprète:

le chemin de cet interprète doit être identique à celui de la version sur laquelle vous travaillez.

1
Qing Yuan

J'ai résolu ce problème en ajoutant la bibliothèque protorpc à la $PYTHONPATH variable d'environnement. Plus précisément, j'ai indiqué la bibliothèque installée dans mon répertoire App Engine:

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

Après avoir ajouté ceci à ~/.bash_profile, en redémarrant ma machine et le code Visual Studio, les erreurs d'importation ont disparu.

Par souci d'exhaustivité, j'ai non modifié les paramètres de Visual Studio Code relatifs à Python. Plein ~/.bash_profile fichier:

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
1
Jack

Je continuais à avoir ces erreurs même après avoir confirmé que les correctifs python et pylint étaient utilisés à partir de mon env virtuel.

Finalement, j'ai compris que dans Visual Studio Code, j'étais dans A) en ouvrant mon répertoire de projet, qui est B) où se trouvait mon Python environnement virtuel, mais j'étais C) et en exécutant mon principal Python programme à partir de deux niveaux plus profonds. Ces trois choses doivent être synchronisées pour que tout fonctionne.

Voici ce que je recommanderais:

  1. Dans Visual Studio Code, ouvrez le répertoire contenant votre programme principal Python. (Il peut s'agir ou non du niveau supérieur du répertoire du projet.)

  2. Sélectionnez le menu Terminal> Nouveau terminal et créez un environnement virtuel directement dans le même répertoire.

    python3 -m venv env
    
  3. Installez pylint dans l'environnement virtuel. Si vous sélectionnez un fichier Python dans la barre latérale, Visual Studio Code vous proposera de le faire pour vous. Sinon, source env/bin/activate puis pip install pylint.

  4. Dans la barre inférieure bleue de la fenêtre de l’éditeur, choisissez l’interprète Python env/bin/python. Sinon, allez dans Paramètres et définissez "Python: Python Path."). Ceci définit python.pythonPath dans Settings.json.

0
jrc