Problèmes avec VS Code#
La configuration de VS Code est dans Installation et configuration : généralités, Python et environnement conda, notebooks.
Problèmes#
V2. VS Code ne trouve pas Python selon d’où on l’a lancé#
- Ce qu’on voit
Lancé depuis Navigator, VS Code propose
baseet son terminal trouvepython. Lancé depuis le menu Démarrer, ni l’un ni l’autre. Ou l’inverse selon les réglages déjà faits.- Cause
Un programme reçoit de celui qui le lance la liste des dossiers où chercher les commandes. Navigator, qui s’exécute dans
base, transmet à VS Code une liste qui contient Anaconda ; le menu Démarrer transmet celle du compte, qui ne le contient pas (A2).- Remède
Toujours lancer VS Code depuis le menu Démarrer, une fois l’interpréteur et le terminal réglés (Python et environnement conda). Le résultat ne dépend alors ni de Navigator ni d’une fenêtre ouverte avant.
V3. L’extension Python ne s’installe pas#
- Ce qu’on voit
Le panneau Extensions reste vide, ou affiche « We cannot connect to the Extensions Marketplace », ou l’installation ne finit pas.
- Cause
Les extensions viennent d’un serveur. Sans session réseau (R1) ou derrière un proxy (R2), VS Code ne l’atteint pas.
- Vérifier
Ouvrir https://marketplace.visualstudio.com dans Firefox.
- Remède
Ouvrir la session réseau et relancer l’installation. Sans réseau, une extension s’installe depuis un fichier
.vsix: panneau Extensions, bouton…en haut, « Install from VSIX… ». L’extension Python en demande deux autres, Pylance et Python Debugger, à installer de la même façon [à décider : fournir les.vsixavec l’archive du TD].
V4. « Restricted Mode » : l’extension Python ne fait rien#
- Ce qu’on voit
« Restricted Mode » en bas de la fenêtre. « Python: Select Interpreter » n’est pas dans la palette. Aucun terminal ne s’ouvre, ou VS Code demande d’abord si on fait confiance au dossier.
- Cause
Le dossier ouvert n’a pas été approuvé, et l’extension Python ne se charge que dans un dossier approuvé.
- Remède
Cliquer sur « Restricted Mode » en bas de la fenêtre, puis « Trust ». Ou palette, « Workspaces: Manage Workspace Trust ».
V5. Le terminal de VS Code affiche une erreur dès qu’il s’ouvre#
- Ce qu’on voit
À chaque nouveau terminal, une ligne de commande s’écrit toute seule, puis
… activate.ps1 cannot be loaded because running scripts is disabled on this system(A7),'conda' n'est pas reconnu(A2), ouCondaError: Run 'conda init' before 'conda activate'. L’invite ne commence pas par(base).- Cause
Le terminal est un PowerShell, qui ne peut pas activer l’environnement sur les postes de la salle. Ou c’est un « Command Prompt » ordinaire, où l’extension Python tape
conda activate base: cette commande ne marche dans uncmdqu’après unconda init cmd.exe, rarement fait sur les postes.- Remède
Faire le réglage du terminal, profil « Anaconda Prompt » (Python et environnement conda). S’il est fait et que l’erreur reste : vérifier que le fichier a été enregistré, que l’onglet du terminal s’appelle « Anaconda Prompt », que les chemins sont ceux du raccourci « Anaconda Prompt », et faire palette, « Developer: Reload Window ». Si le fichier de réglages est souligné en rouge : V10.
V6. « Python: Select Interpreter » ne propose pas Anaconda#
- Ce qu’on voit
La liste ne contient que « Enter interpreter path… », ou des Python qui ne sont pas celui d’Anaconda (
C:\Python27, le Python du Microsoft Store).- Cause
L’extension cherche Anaconda à plusieurs endroits du poste, dont
C:\ProgramData\anaconda3. Elle ne le trouve pas quand il est installé ailleurs, ou quand la recherche a échoué une fois et que son résultat est resté en cache.- Remède
Cliquer « Enter interpreter path… », puis « Find… », et choisir le fichier
C:\ProgramData\anaconda3\python.exe. Pour que la liste devienne complète (avec les environnements du TD 1h) : le réglagepython.condaPath, décrit dans Python et environnement conda, puis « Developer: Reload Window ». Le chemin exact est celui du raccourci « Anaconda Prompt » (A1).
V7. python lance un autre Python que celui d’Anaconda#
- Ce qu’on voit
« Python n’a pas été trouvé ; exécutez sans arguments pour l’installer à partir du Microsoft Store… ». Ou
Python 2.7. OuModuleNotFoundErrorsur un module qui est pourtant dansbase.- Cause
Sans environnement activé (A3),
pythonest le premierpython.exeque Windows trouve : souvent un raccourci du Microsoft Store qui ne fait que proposer une installation, ou un vieux Python du poste (Variables d’environnement).- Vérifier
where pythondans le terminal liste tous lespython.exetrouvés, dans l’ordre.python -c "import sys; print(sys.executable)"dit lequel répond.- Remède
Employer un terminal
cmdactivé, par le réglage du terminal (Python et environnement conda). Le bouton Run n’est pas concerné : il lance l’interpréteur choisi, par son chemin complet.
V8. ModuleNotFoundError alors que le paquet est installé#
- Ce qu’on voit
ModuleNotFoundError: No module named 'pandas'(ou un autre), alors queconda listdit que le paquet est là.- Cause
Le paquet est dans un environnement, et le programme s’exécute dans un autre. Trois choix indépendants désignent l’environnement : l’interpréteur (bouton Run), le terminal (ce qui y est activé), le noyau du notebook.
- Vérifier
Dans chacun des trois,
import sys; print(sys.executable): les chemins doivent être identiques.conda list -n <env> <paquet>dit dans quel environnement le paquet est.- Remède
Choisir le même environnement aux trois endroits (Python et environnement conda, J4), ou installer le paquet dans celui qui s’exécute :
conda install -n <env> -c conda-forge <paquet>.
V9. Le raccourci clavier du terminal ne répond pas#
- Ce qu’on voit
Ctrl+ùn’ouvre rien, ou ouvre autre chose.- Cause
Le raccourci dépend de la disposition du clavier, et le poste n’a pas forcément celle attendue.
- Remède
Menu Terminal, New Terminal. Ou palette, « Terminal: Create New Terminal ».
V10. Le fichier de réglages est souligné en rouge, ou ne s’enregistre pas#
- Ce qu’on voit
« Unable to write into user settings. Please open the user settings to correct errors/warnings in it and try again ». Ou un réglage ajouté qui ne produit rien, avec une ligne soulignée en rouge dans
settings.json.- Cause
Une erreur de syntaxe dans le fichier : virgule manquante entre deux réglages, virgule en trop avant l’accolade finale, barre oblique inverse simple dans un chemin.
- Vérifier
Palette, « Preferences: Open User Settings (JSON) ». Le panneau Problems (
Ctrl+Maj+M) indique la ligne.- Remède
Corriger la ligne indiquée. Chaque réglage est séparé du suivant par une virgule ; le dernier n’en a pas ; les chemins s’écrivent avec
\\. En cas de doute, passer par l’interface : palette, « Preferences: Open Settings (UI) », qui écrit le fichier elle-même.
V11. « Error loading webview: Could not register service worker »#
- Ce qu’on voit
À l’ouverture de l’aperçu Markdown (
Ctrl+Maj+V), d’un notebook ou de la page des réglages, un cadre vide avecError loading webview: Error: Could not register service worker: InvalidStateError: Failed to register a ServiceWorker: The document is in an invalid state.- Cause
Ces vues sont des pages web internes, servies par un programme de cache du navigateur intégré, le service worker. Son cache est dans le profil du compte,
C:\Users\<nom>\AppData\Roaming\Code\Service Worker. Quand il a été écrit par une version antérieure de VS Code, la version en place ne parvient plus à l’enregistrer. Sur les postes de la salle, le profil date de la création de l’image et a traversé plusieurs mises à jour de VS Code.- Vérifier
Dans l’explorateur de fichiers, la date de modification du dossier
Service Workerest antérieure au dernier démarrage de VS Code.- Remède
D’abord palette, « Developer: Reload Webviews », qui suffit parfois pour la session. Sinon, fermer VS Code entièrement, puis dans un
cmdsupprimer les caches, que VS Code recrée au démarrage suivant :rmdir /s /q "%APPDATA%\Code\Service Worker" rmdir /s /q "%APPDATA%\Code\Cache" rmdir /s /q "%APPDATA%\Code\Code Cache" rmdir /s /q "%APPDATA%\Code\CachedData" rmdir /s /q "%APPDATA%\Code\GPUCache"
Les réglages (
User\), les extensions et l’historique des fichiers ouverts ne sont pas dans ces dossiers. Relancer VS Code et rouvrir l’aperçu. Si l’erreur reste, un antivirus ou une stratégie empêche l’écriture dansService Worker: lancercode --verbosedepuis uncmdaffiche le refus dans la console.