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
?
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.
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).
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"
],
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
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
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
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).
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.
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
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:
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.)
Sélectionnez le menu Terminal> Nouveau terminal et créez un environnement virtuel directement dans le même répertoire.
python3 -m venv env
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
.
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.