Pylance vs. Ruff — les questions urgentes, enfin répondues
Ces questions sont apparues en travaillant sur les logs de la console VS Code — elles méritent donc leur place dans le blog, pas seulement dans un chat :
python.languageServer va-t-il dans les User Settings ou dans les Workspace Settings ?
Qu''est-ce qui est plus moderne : Pylance ou Ruff ? A-t-on encore besoin de Pylance si Ruff est là ?
Comment installer Ruff — pour tout le workspace ou pour l''utilisateur ?
Réponse courte : Pylance et Ruff ne sont pas en concurrence. Ils résolvent des problèmes fondamentalement différents et se complètent idéalement. En les combinant correctement, on obtient la configuration Python la plus robuste dans VS Code.
Compatible Black signifie que Ruff formate le code Python selon exactement les mêmes règles que l'outil populaire Black — guillemets cohérents, longueur de ligne fixe (88 caractères), aucun débat de style. C'est un remplacement direct : si vous utilisiez Black, vous pouvez passer à Ruff sans modifier une seule ligne de code.
TL;DR
Pylance ≠ Ruff. Les deux ensemble = la meilleure configuration.
User Settings (%APPDATA%\Code\User\settings.json) :
Condition préalable : l'extension VS Code charliermarsh.ruff doit être installée. Ce n'est qu'à cette condition que editor.defaultFormatter = charliermarsh.ruff est réellement pris en compte.
Recommandation : insérez ce bloc dans les paramètres utilisateur de VS Code, donc dans %APPDATA%\Code\User\settings.json.
Workspace Settings (.vscode/settings.json dans le projet) :
Qui fait quoi ? Deux outils — une séparation claire
L'idée reçue la plus répandue : Ruff ne remplace pas Pylance. Ces deux outils résolvent des problèmes fondamentalement différents.
Fonctionnalité
Pylance
Ruff
IntelliSense / Autocomplétion
✅
❌
Vérification de types (via Pyright)
✅
❌
Aller à la définition
✅
❌
Documentation au survol / Signatures
✅
❌
Linting (flake8, pylint, …)
faible
✅
Formatage (compatible Black)
❌
✅
Tri des imports (isort)
❌
✅
Vitesse
normale
10–100× plus rapide
Pylance est le serveur de langage — le moteur derrière IntelliSense, l'autocomplétion, la vérification de types et le refactoring. Sans Pylance (ou un serveur équivalent basé sur Pyright), les fichiers Python sont pour ainsi dire du « texte aveugle » pour VS Code.
Ruff est l'outil de linting et de formatage — écrit en Rust, extrêmement rapide, conçu pour remplacer flake8, pylint, isort, pyupgrade et Black. Tout en un seul binaire.
Où vont les paramètres ?
Règle d'or : Préférences d'outils (lequel j'utilise ?) → User Settings. Comportement du projet (quelle rigueur ?) → Workspace Settings.
Dans ma configuration, j'utilise volontairement cet allègement globalement dans les User Settings. Pour des équipes ou des dépôts avec des standards très différents, un scope au niveau du workspace peut malgré tout être le meilleur compromis.
Colonnes
python.languageServer
User (global)
Préférence globale — identique pour tous les projets
python.analysis.typeCheckingMode
Workspace
La rigueur varie selon le projet (strict / basic / off)
python.analysis.extraPaths
Workspace
Chemins d'importation spécifiques au projet
python.defaultInterpreterPath
Workspace
Chaque projet utilise son propre venv
python.analysis.diagnosticMode
Workspace
Les workspaces lourds nécessitent "openFilesOnly"
[python] › editor.defaultFormatter
User (global)
Ruff comme formateur par défaut pour tous les fichiers Python
Dans les fichiers de paramètres concrètement
User Settings (%APPDATA%\Code\User\settings.json) :
Recommandation : les deux — CLI globale + binaire local dans le venv.
Global (pour tous les projets, sans conflit de venv) :
# Avec pipx — recommandé, car isolé :
pipx install ruff
# Ou classiquement en global :
pip install ruff
Local au projet (dans le venv du projet) :
# Dans le venv activé :
pip install ruff
Ou comme dépendance de développement dans pyproject.toml :
[project.optional-dependencies]
dev = ["ruff>=0.4.0"]
Extension VS Code (charliermarsh.ruff)
Condition préalable : l'extension VS Code charliermarsh.ruff doit être installée. La simple affectation editor.defaultFormatter = charliermarsh.ruff ne suffit pas si l'extension est absente.
Entrée recommandée dans les paramètres utilisateur de VS Code (%APPDATA%\Code\User\settings.json) :
Dans ma configuration, le serveur Ruff natif est en plus activé :
Conclusion : Garder Pylance activé — bien configuré
En bref : Ne pas désactiver Pylance — le configurer correctement. Activer et désactiver Pylance « à la demande » génère une charge inutile sans bénéfice réel.
Pylance est le moteur derrière l'IntelliSense, les infobulles, le go-to-definition et le refactoring — les fonctionnalités qui font de VS Code un véritable environnement de développement. Bien configuré, il consomme très peu de ressources supplémentaires.
En permanence dans les User Settings (une fois, globalement)
Dans ma configuration actuelle, ce choix est délibérément défini au niveau utilisateur. Des équipes avec des conventions différentes peuvent préférer un scope plus resserré et garder davantage de règles spécifiques au projet dans .vscode/settings.json.
diagnosticMode: openFilesOnly est le réglage clé pour les projets Python avec de nombreux fichiers ou dépendances externes : Pylance n'analyse que les onglets actuellement ouverts au lieu de parcourir tout le projet en arrière-plan. L'éditeur reste fluide, même dans des projets plus grands.
Quand désactiver Pylance par workspace ?
Uniquement si un workspace n'a pas de venv dédié — par exemple de purs scripts utilitaires sans dépendances de types. Dans ce cas, une surcharge locale au workspace suffit :
{ "python.languageServer": "None" }
Cela désactive Pylance uniquement pour ce workspace, sans toucher au réglage global.
La séparation des tâches reste claire
Tâche
Outil
Où configurer
IntelliSense, vérification de types, refactoring
Pylance
User Settings (toujours actif)
Linting, formatage, tri des imports
Ruff
User Settings (toujours actif)
Rigueur de la vérification de types
typeCheckingMode
Workspace Settings
Quel venv utiliser
defaultInterpreterPath
Workspace Settings
flake8, pylint, mypy, isort, Black — plus nécessaires. Ruff les remplace tous.
If my IT guides or the Snapmaker Wiki saved your project (or your hardware), I'd appreciate a coffee! ☕ Your support doesn't just cover hosting and testing costs—it also fuels the development of my apps and tools. Every donation helps me dedicate more time to coding solutions that make our tech-life easier. Thank you for being part of this!