首页 > 解决方案 > 使用虚拟环境时,vscode 内部人员中的 sys.path 行为不等同于 jupyter lab

问题描述

当切换到 vscode-insiders 笔记本而不是 jupyter 实验室时,我注意到src无法再导入使用 setuptools 安装的本地包,它会抛出ModuleNotFoundError.

在比较了两个 IDE 之后,似乎 vscode 并没有sys.path像 jupyter lab 那样改变。

我的项目架构:

foo
└── bar
    └── myproject
        ├── notebooks
        │   └── nb.ipynb
        ├── setup.py
        ├── env
        └── src

我的安装步骤:

cd /foo/bar/myproject
source env/bin/activate
(env) python3 -m pip install -e .
(env) python3 -m ipykernel install --user --name=my_project_env # add the jupyter kernel based on the environment

然后在 jupyterlab 和 vscode 中打开 nb.ipynb 并检查 sys.path 给出以下结果:

jupyter实验室:

print(sys.path)
-->
...
foo/bar/myproject # allows to import src
...

代码:

print(sys.path)
-->
...
foo/bar/myproject/notebooks # does not allow to import src
...

我本来希望 vscode 将foo/bar/myproject目录添加到 sys.path 因为它是 src 所在的目录,我有什么问题吗?

(与此同时,我找到了以下解决方法,将以下内容添加到我settings.json的 vscode 中:

"jupyter.runStartupCommands":  [
        "import sys",
        "sys.path.insert(2,'${workspaceFolder}')"
    ]

)

标签: visual-studio-codevirtualenvsetuptoolsjupyter-labsys.path

解决方案


推荐阅读