![](/img/trans.png)
[英]VS Code Python Interactive Window ImportError: cannot import name
[英]How to set the import path for the the Python Interactive window in VS Code?
我在包含目录和名为脚本和测试的子目录的顶层使用了一个非常常见的项目结构和 python 包。 通常,您希望使用此设置将顶级文件夹添加到 sys.path 中,这样您就可以在脚本和测试中说 import mypackage 。
我发现我必须使用两种不同的机制, - 添加一个 .env 文件来为测试和 linting 设置 PYTHONPATH 等,并为终端设置 terminal.integrated.env.windows。
但是,这些似乎都不会影响 Python 交互窗口,因此如果我在脚本(不是笔记本)中使用 #%% 定义一个单元格并使用 Ctrl-Enter 运行它,那么它将无法找到位于项目目录的根目录。
有没有办法在不更改源文件的情况下实现我想要的? 理想情况下,有一种方法可以设置在任何地方都可以使用的导入路径,而不必像 .env 文件那样指定绝对路径。 例如,Spyder 可以使用其 PYTHONPATH 管理器执行此操作,并默认添加项目的根目录。
您正在寻找的设置中的魔法关键字是jupyter.notebookFileRoot
。 所以在你的settings.json
添加类似
"jupyter.notebookFileRoot": "${workspaceFolder}"
或您需要的任何文件夹。
或者,转到Settings
( CTRL
+ ,
),选择Workspace
选项卡并向下滚动到或搜索Jupyter: Notebook File Root
并在那里输入您的文件夹。
在设置文件中,您还可以添加启动配置等。我的设置文件目前看起来像这样,并支持运行完整的 Python 文件( CTRL
+ F5
)以及交互模式(运行由# %%
定义的单元格):
{
"launch": {
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"env": {
"PYTHONPATH": "${workspaceFolder}"
},
"cwd": "${workspaceFolder}"
}
]
},
"jupyter.notebookFileRoot": "${workspaceFolder}"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.