【问题标题】:How to run python interactive in current file's directory in Visual Studio Code?如何在 Visual Studio Code 的当前文件目录中运行 python 交互?
【发布时间】:2018-12-22 23:47:30
【问题描述】:

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

【问题讨论】:

    标签: python visual-studio-code vscode-settings


    【解决方案1】:

    在“用户设置”中,使用搜索栏查找“python.terminal.executeInFileDir”并将其值设置 (=) 为“true”而不是“false”。

    【讨论】:

    • 我认为这似乎行不通。交互窗口与notebook file root 设置相关
    • 这没有回答最初的问题,但这是我一直在寻找的答案,所以请支持 +1
    • 我在当前的 VS Code 中看不到“用户设置”这对我来说在一台计算机上有效,但在不同的工作站 11-2021 上。我进入常规设置,输入 python.terminal.executeInFileDir 并为用户和工作区设置检查标记。但是,当我尝试运行文件时, os.getcwd() 给了我打开文件夹的位置,这是一个目录,而不是文件的位置。有什么想法吗?
    【解决方案2】:

    在 2019.10.44104 版本之后更新

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

    请注意,如果您随后从另一个文件运行代码,则根目录不会更改,除非您中断/重新启动内核(或关闭 VS Code)。关于这方面,请看下面的comment和对应的github issue


    对于 Python 交互窗口,您要查找的设置是 python.dataScience.notebookFileRoot。但是,正如this answer 中对类似问题的解释,

    notebookFileRoot 设置不支持始终在文件位置打开(无需将 notebookFileRoot 设置为每个文件夹的绝对路径)。 ${fileDirname} 等 VSCode 变量特定于任务和调试配置文件(launch.jsontask.json)。

    另请参阅关联的github issue

    如上所述,您仍然可以将此设置设置为特定的绝对路径,如果您一次主要处理一个项目,这可能就足够了。

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

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

    【讨论】:

      【解决方案3】:

      我使用了选项运行 -> 添加配置(或打开配置,如果可用) 这将打开您当前的“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}"            
                  
              }
          ]
      }
      

      【讨论】:

        【解决方案4】:

        您需要转到file/preferences/user settings 并点击窗口右上角的“{}”图标。之后,将此设置放入:"terminal.integrated.cwd": "C:\\Users\\myUser\\",,然后您的终端目录恰好位于任何位置。这个答案并不是最不准确的,因为我自己在使用 vscode 时仍然是个菜鸟,所以如果有经验丰富的人可以回复这个帖子,那就太好了。

        【讨论】:

          【解决方案5】:

          目前还没有直接的方法来实现这一点。为了寻找更好的解决方案,我在 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 附加到第一步和最后一步。

          【讨论】:

            【解决方案6】:

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

            terminal.integrated.shell.windows": ""

            它将从下一个终端反射出来。

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

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

            【讨论】:

              【解决方案7】:

              此问题已回答here。解决方法是在.vscode文件夹中配置launch.json文件

              【讨论】:

              • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
              猜你喜欢
              • 2021-02-20
              • 2021-11-01
              • 2019-09-12
              • 1970-01-01
              • 1970-01-01
              • 2021-04-28
              • 2020-08-31
              • 2017-09-28
              • 2019-11-23
              相关资源
              最近更新 更多