pythonvisual-studio-codepylancevscode-python

vscode/pylance auto-import incorrect root path


Let's suppose that I have a project with this file structure:

project_dir
└── src
    ├── package1
    │   └── module1.py
    └── package2
        └── module2.py

When I want to use some class from module1 in some other module I type something like

class SomeNewClass(ClassFromModule1):  # here I press ctrl-space to make auto-import
    ...

When Pylance makes auto-import it always takes it starting from the root directory of the project, so I got this auto-import:

from src.package1.module1 import ClassFromModule1

The problem is that my working directory is src and I want to get

from package1.module1 import ClassFromModule1

Is there any way to fix root path of the auto-import Pylance feature?


Solution

  • By default, if you import a module in src, it should look like the following (same effect as you want).

    enter image description here

    enter image description here

    So please check if the following settings in vscode are modified: Open Settings and search for Analysis: Auto Search Paths.

    enter image description here

    This item is enabled (checked) by default. If it was modified to be off, turn it back on.

    Here are some examples:

    Folder structure:

    Project_dir
    ├─ folderone
    │  └─ package3
    │     └─ moudle3.py  # --class C
    ├─ src
    │  ├─ package1
    │  │  └─ moudle1.py  # --class A
    │  └─ package2
    │     └─ moudle2.py  # --class B
    └─ Test.py
    

    Note: vscode uses the currently open folder as the workspace. So which level of folder you open will also affect the code in the import part.

    The above example is to open the Project_dir folder as a workspace in vscode.

    If I put Project_dir in a new folder ImpDemo and open the ImpDemo folder in vscode. Then the code of the import part is like this:

    enter image description here

    enter image description here