Sanjin Juric Fot
Sanjin Juric Fot

Reputation: 271

How to resolve Pylance "import could not be resolved" in VSCode Jupyter Notebook?

I am trying to import function query_creative inside of file query_creative.py into the notebook Notebook.ipynb. The file hierarchy is like this:

    ├───playground
    │    Notebook.ipynb
    ├───src
    ├───queries
         query_creative.py

The code I use in my notebook goes like this:

import sys
sys.path.append('..')
from src.query.query_creative import query_creative

and the thing works. However, the line with the function import is underlined by Pylance with the message: "Import could not be resolved" and when I use this function later on, it works but Pylance underlines it again. I've tried modifying the setting.json, but nothing seems to work. I thank in advance for any help!

Upvotes: 14

Views: 14089

Answers (6)

Ford F150 Gaming
Ford F150 Gaming

Reputation: 648

For me the following fixes this: make sure you have correct python environment selected as the kernel. Then press F1, type "reload" and select "Developer: Reload Window". It will restart VSCode, reopen all your files and all imports are now detected.

Sometimes, you can select the correct kernel, close your current vscode tab tab and press Ctrl+Shift+T to reopen it, which is a little bit faster. This seems to only work if you have a workspace opened.

Upvotes: 32

stackTobi
stackTobi

Reputation: 21

For anyone still interested: This was a known issue and has been fixed for VS-Code 1.74 and later with the latest Jupyter, PyLance and Python extensions. So update, reload all extensions and restart Jupyter kernel should fix it.

See these two issues for reference:
https://github.com/microsoft/pylance-release/issues/3035
https://github.com/microsoft/vscode-jupyter/issues/11038

Upvotes: 2

ping George
ping George

Reputation: 69

https://blog.csdn.net/qq_41019681/article/details/111193080

"python.analysis.extraPaths": [
        "D:\\ProgramFiles\\Anaconda3-2021.05\\lib\\site-packages"
    ]

add "python.analysis.extraPaths" by

import package_name as pkg 
print(pkg.__file__)

Upvotes: 0

Vlad V
Vlad V

Reputation: 53

Which version of vs code you have? I faced with same issue after updating to 1.70.

UPD.

Downgrading to 1.69.2 fixed that issue. However, I have another laptop with 1.70 with exact same notebook there is no such issue, so if you want to stick around 1.70 it is worth to try to completely remove vscode and install it again.

UPD2.

After a while my downgrade didn't help on another machine, so I compared Pylance output difference between them and find out, that "working" instance used legacy jupyter notebook support, while "buggy" with "LSP". After disabling option Pylance Lsp Notebooks Enabled enter image description here everything worked as usual and fixed that problem

Upvotes: 2

Sanjin Juric Fot
Sanjin Juric Fot

Reputation: 271

I managed to solve it eventually by downgrading Jupyter extension to VS Code to v2022.4.1001071005. Thanks everyone for help!

Upvotes: 4

Eduardo
Eduardo

Reputation: 1413

It seems that pylance is unable to determine that the code is importable. Instead of modifying your path at the beginning of the script, you could create a Python package with your code, then do:

cd your-project
pip install -e .

You can see a guide to create packages here.

With these settings, pylance and any other editor/IDE will be able to identify your project correctly.

Beware that in VSCode, you can switch the interpreter, so ensure you select one where your code is installed:

enter image description here

Upvotes: 0

Related Questions