微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用虚拟环境时,vscode 内部人员中的 sys.path 行为不等同于 jupyter 实验室

如何解决使用虚拟环境时,vscode 内部人员中的 sys.path 行为不等同于 jupyter 实验室

当切换到 vscode-insiders notebooks 而不是 jupyter lab 时,我注意到无法再导入使用 setuptools 安装的本地 src 包,它会抛出一个 ModuleNotFoundError

对比两个 IDE 后,vscode 似乎没有像 jupyter lab 那样改变 sys.path

我的项目架构:

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
...

vscode:

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

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

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

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

)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?