如何在Visual Studio Code中以当前文件目录运行Python交互?

37

在VSCode中执行 "Run Selection/Line in Python Terminal" 命令时,终端的当前工作目录是工作区根目录。如何在运行选择/行时将终端的当前目录设置为当前文件所在的目录?


相关链接:https://stackoverflow.com/q/56776521/11107541 - undefined
7个回答

34
在“用户设置”中,使用搜索栏查找“python.terminal.executeInFileDir”,将其值从“false”更改为“true”。

1
我认为这似乎不起作用。交互式窗口与“笔记本文件根目录”设置有关。 - SCaffrey
4
这并不回答原来的问题,但它是我所寻找的答案,所以我给你点赞+1。 - Will Jenkins
我在当前的VS Code中找不到“用户设置”。这在我的一台电脑上行得通,但在另一台11-2021工作站上则不行。我进入了常规设置,输入了python.terminal.executeInFileDir,并为“用户”和“工作区”两个选项打了勾。但是,当我尝试运行文件时,os.getcwd()给出的是打开文件夹的位置,而不是文件的位置。有什么想法吗? - illan
这适用于VS Code 1.84.2中的“运行Python文件”(但不适用于问题中的情况)。无论如何,谢谢您 :) - undefined

14

根据发布的版本2019.10.44104更新

在VS Code Python扩展的版本2019.10.44104之后,您现在可以将 python.dataScience.notebookFileRoot 设置为 ${fileDirname},以直接在运行文件的目录中启动Python交互窗口。

请注意,如果您随后从另一个文件运行代码,则根目录将不会更改,除非您中断/重新启动内核(或关闭VS Code)。关于此方面,请参见以下评论和相应的github问题


对于Python交互窗口,您要查找的设置是 python.dataScience.notebookFileRoot。但是,正如这个答案中解释的那样:

通过设置 notebookFileRoot 不支持始终在文件位置打开(无需每个文件夹都设置绝对路径的 notebookFileRoot)。VSCode变量(如 ${fileDirname})仅适用于任务和调试配置文件(launch.jsontask.json)。

请参阅相关的github问题

正如指示的那样,您仍然可以将此设置设置为特定的绝对路径,如果您主要一次只处理单个项目,则可能足够。

或者,您也可以在脚本/笔记本的顶部添加以下代码:

import os
os.chdir('absolute-path-to-workingDir')

截至2022年,我认为该选项不再可用(运行VSCode 1.73.1)。 - Raul Guarini Riva

12

我使用了“运行”->“添加配置”(或者如果可用,“打开配置”)选项。 这将打开您当前的“launch.json”文件。 现在您可以将此行添加到所需的配置项中(在我的情况下是Python):

"cwd": "${fileDirname}"

这行代码将使VSCode在与正在执行的文件相同的文件夹中运行代码。
你可以在以下链接中获取更多详细信息: https://code.visualstudio.com/docs/editor/variables-reference 这是完整的json文件(仅供参考):
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [                
                    
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${fileDirname}"            
            
        }
    ]
}

这适用于“运行和调试:Python:当前文件”,但不适用于问题中描述的情况。无论如何,谢谢您 :) - undefined

1
目前还没有直接实现这个目标的简单方法。为了寻找更好的解决方案,我使用VScode Marketplace中的“Terminal Here”扩展程序来实现一个变通方法。该扩展程序允许您在当前文件的目录中打开一个综合终端。结合该扩展程序和其他一些步骤,您应该可以得到所需的行为。
  • 安装该扩展程序后,请确保您的文件窗口处于焦点状态,然后按下ctrl+shift+p并执行Terminal Here: Create Terminal。这将在文件的目录中创建一个新的终端。
  • 在终端中输入python以启动Python解释器。
  • 现在,将光标定位在您想要执行的行上,然后按下ctrl+shift+p并执行Terminal: Run selected text in active terminal。这将在打开的Python解释器中运行该行代码。

前两步仅在首次在当前文件目录下运行Python解释器中的代码选择时需要。所有后续选择都可以使用第三步运行。为了加快速度,您可以将自定义keybindings附加到第一步和最后一步。


1
你需要前往文件/首选项/用户设置,并在窗口右上角点击“{}”图标。之后,将此设置添加进去:"terminal.integrated.cwd": "C:\\Users\\myUser\\",,然后无论你的终端目录位于何处,都会生效。这个答案不是最准确的,因为我自己也是一个使用vscode的新手,如果有更有经验的人能回复这个帖子那就太好了。

0

这些选项将会帮助您。 文件->首选项->设置。 添加或编辑以下设置。

terminal.integrated.shell.windows": ""

从下一个终端开始,它将被反映出来。

并将.profile添加到您的默认shell中,并将默认路径添加到其中。

更多信息请参见:https://code.visualstudio.com/docs/editor/integrated-terminal


-1

这个问题在这里得到了解答。解决方案是配置.vscode文件夹中的launch.json文件。


1
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。-【来自审查】 - Flair
所提及的教程解决的是一个不同的问题:调试Python文件。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接