By default, Poetry creates virtual environments in a centralized, hidden global cache directory (e.g., ~/.cache/pypoetry/virtualenvs on macOS/Linux or %USERPROFILE%\AppData\Local\pypoetry\Cache\virtualenvs on Windows).
The critical step:
Suppose you have a Poetry project with the following structure:
When you use Poetry, your dependencies are installed in a dedicated virtual environment, typically outside your project directory (e.g., in ~/.cache/pypoetry/virtualenvs ). By default, VS Code and Pylance might be looking at the global system Python installation rather than the specific Poetry environment.
Open the Command Palette using Ctrl+Shift+P (Windows/Linux) or Cmd+Shift+P (macOS). Type and select . If your Poetry environment appears in the list, select it.
Add the python.analysis.extraPaths property, pointing to the site-packages directory inside your Poetry cache. Your .vscode/settings.json file should look like this:
By explicitly establishing this link between Poetry's environment isolation and Pylance's code analysis, you can eliminate false-positive error flags and enjoy an accurate, productive development workflow.
Pylance restarts. Within 10 seconds, red squiggles should vanish.
"label": "Poetry: Set Interpreter for Pylance", "type": "shell", "command": "echo $command:python.interpreterPath", "dependsOn": ["Poetry: Sync Environment"]
The cleanest and most straightforward way to fix this issue is to explicitly tell VS Code to use the Python interpreter generated by Poetry. Step 1: Get the path of your Poetry environment
This appears when Pylance finds a stub ( .pyi ) but not the implementation. Run: