Pylance missing imports

Here’s a concise review of the issue when using Poetry , including causes and solutions.

Your code is clean. Your types are checked. Your imports are resolved.

Alex had restarted the Pylance server. Twice. They had cleared the .pyright_cache and the VS Code workspace storage. They had even tried the darkest ritual: deleting .venv and running poetry install from scratch, watching the green progress bars with the desperate hope of a gambler watching a slot machine.

Before typing random commands, it’s crucial to understand why this breakage occurs. Pylance is a static type checker. It needs to know the exact Python interpreter and site-packages path to validate your imports. Poetry, by default, is "non-intrusive." It creates virtual environments in a cache directory (e.g., ~/Library/Caches/pypoetry/virtualenvs/ on macOS or %APPDATA%\pypoetry\virtualenvs on Windows).

Select Interpreter

: Type "Python: Select Interpreter" and select it.

  • Confirm imports run at runtime
    • Open the Command Palette → “Python: Select Interpreter” and ensure it matches Poetry’s virtualenv for the project (Poetry shows the venv path with poetry env info -p).

    This isn't a bug in your code; it’s a "handshake" issue between Poetry's virtual environments and VS Code's language server. Here is the definitive guide to fixing it. Why It Happens Pylance only "sees" packages installed in the currently selected Python interpreter