web-dev-qa-db-fra.com

Comment définir correctement PYTHONPATH pour le code Visual Studio

Comment configurer correctement le $PYTHONPATH variable pour mon espace de travail dans VisualStudio Code?

Informations générales

J'ai installé deux versions de GNURadio:

  1. GNURadio version 3.7.11 installée par le gestionnaire de paquets Linux Mint dans /usr/lib/python2.7/dist-packages/gnuradio

  2. GNURadio version 3.7.13.4 installée par PyBOMBS dans /home/tejul/Documents/gr13/default/lib/python2.7/dist-packages/gnuradio _ (mon répertoire de préfixe est ~/Documents/gr13/default)

Je ne peux utiliser la version plus récente de GNURadio qu'après avoir exécuté le setup_env.sh script (qui ajoute, entre autres, /home/tejul/Documents/gr13/default/lib/python2.7/dist-packages à $PYTHONPATH) puis lancez python dans le terminal

tejul@Wacom:~/Documents/gr13/default$ ls
bin  etc  include  lib  libexec  setup_env.sh  share  src
tejul@Wacom:~/Documents/gr13/default$ source ./setup_env.sh 
tejul@Wacom:~/Documents/gr13/default$ python
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from gnuradio import gr
>>> gr.version()
'3.7.13.4'
>>> 

Sans modifier le $ PYTHONPATH python - naturellement - importe l'ancienne version de GNURadio.

Je veux écrire, exécuter et déboguer python les scripts de la nouvelle version de GNURadio dans VisualStudio Code. J'ai essayé de comprendre la sélection de interpréteurs python , espaces de travail , et environnements pour VSCode.

Autant que je sache, le paramètre d'espace de travail VSCode python.pythonPath ne doit pas être confondu avec la variable d’environnement $PYTHONPATH. python.pythonPath est le chemin de l’interprète python utilisé pour le débogage ou l’exécution du code, tandis que $PYTHONPATH est la variable d’environnement que python utilise pour rechercher des modules.

Il semble que PyBOMBS n’a pas installé son propre interpréteur python dans mon répertoire de préfixe. Je dois donc utiliser VSCode avec mon interprète normal python situé à /usr/bin/python2.7. Donc, redéfinir le python.pythonPath ou en sélectionnant un autre python interprète ne m'aiderait pas.

Je dois laisser VSCode utiliser ma propre version de la variable d'environnement $PYTHONPATH qui dirait à mon interprète habituel python d'importer des modules de préférence de /home/tejul/Documents/gr13/default/lib/python2.7/dist-packages.

Problème

Suite à la documentation , j'ai créé mon propre .env fichier dans le répertoire de l’espace de travail qui définit l’ordre de préférence des emplacements à partir desquels python doit importer les modules. Hélas, cela n’a aucun effet sur le python interprète.

Showing that VSCode is ignoring my $PYTHONPATH setting

Pouvez-vous voir quelque chose que je fais mal ici? J'ai aussi essayé:

  • Régler PYTHONPATH sur un niveau de dossier supérieur, c'est-à-dire /home/tejul/Documents/gr13/default/lib/python2.7, cela n'a pas aidé
  • Appel de la variable $PYTHONPATH au lieu de PYTHONPATH, cela n'a pas aidé
  • Redémarrage du VSCode après chaque modification du .env fichier, cela n'a pas aidé
  • Utilisation de guillemets doubles autour de la chaîne de chemin d'accès, par exemple PYTHONPATH="/home/tejul/Documents/gr13/default/lib/python2.7:/usr/lib/python2.7", cela n'a pas aidé
9
Zababa

OP semble avoir posé des questions sur la syntaxe de chemin d'accès du fichier .env et du code vscode, de sorte qu'il trouve et lit certains fichiers de module personnalisés. Mon problème était similaire en ce sens que je voulais que le code trouve mes modules personnalisés à importer dans un script. Je ne voulais pas placer mes modules personnalisés dans un dossier de mon environnement python. Je souhaitais également éviter de définir un ou plusieurs chemins en tant que PYTHONPATH pour les variables utilisateur dans l'environnement Windows. fonctionnera si vous voulez le faire. Je travaille dans vscode dans Windows 10.

1) SYNTAXE:

a) J'ai trouvé que la syntaxe de chemin suivante fonctionne dans le fichier env:

PYTHONPATH = C:/0APPS/PYTHON/_MODULES

Mes fichiers de module .py sont dans ce dossier.

b) # fonctionne pour les commentaires dans le fichier .env.

2) CONFIGURATION DE VSCODE: J'ai constaté que les travaux suivants fonctionnent:

a) Comme Sunew l'a dit à l'étape 2 Ma configuration: utilisez l'explorateur dans vscode pour l'ouvrir dans le dossier de l'espace de travail du projet sélectionné. Pour moi, c’est Q:\420 PYTHON

b) Donnez un nom au fichier env, comme le fichier vscode.env, et placez-le dans ce dossier au niveau supérieur de l'espace de travail.

c) Ouvrez les paramètres vscode et recherchez .env où sous Extensions> Python, vous trouverez "Python: fichier env". Modifiez le champ pour ajouter le nom de votre fichier env juste avant .env, par exemple $ {workspaceFolder} /vscode.env

d) importer custom_modulename fonctionne maintenant pour moi - dans la fenêtre interactive python) et dans un script.

2
Graham Hobbs

Mettre PYTHONPATH dans .env fonctionne pour moi. Notez que l'effet concerne uniquement vscode et les outils qu'il exécute, tels que pylint.

Ma situation: j'ai un projet qui n'est pas un paquet installable par pip, mais simplement un dossier source. (Pour des raisons historiques ...)

myproject/src

Le projet a des dépendances définies dans un fichier pip requis.

Ma configuration:

  1. Je crée un virtualenv et installe les packages à partir du fichier require.
  2. J'ouvre vscode dans le dossier myproject - donc cela devient la racine du vscode "projet".
  3. Je pointe vscode pour qu'il utilise virtualenv en tant qu'interpréteur python. Ceci importera les dépendances installées avec le travail pip. (Pour les linters, intellisense, etc.)
  4. Pour que les importations depuis mon source de projet fonctionnent également pour les linters (pylint en particulier) dans vscode, j’ajoute un fichier .env contenant ce contenu, en ajoutant le dossier source de mon projet à PYTHONPATH:
PYTHONPATH=./src:${PYTHONPATH}
2
sunew