geekdoc-python-zh/docs/pythonland/20.md

255 lines
16 KiB
Markdown
Raw Permalink Normal View History

2024-03-03 22:54:39 +08:00
# VSCode 中的 Python:运行和调试
> 原文:[https://python . land/creating-python-programs/python-in-vs code](https://python.land/creating-python-programs/python-in-vscode)
本文向您展示了如何在 VSCode 中使用 Python。您将学习如何运行和调试 Python 程序,以及如何充分利用 VSCode 中的命令行。如果您遵循了本教程,那么您已经阅读了许多关于 ide 和 VSCode 的内容。如果没有,您可能希望从这些页面开始:
* 如何[用记事本写一个简单的 Python 程序](https://python.land/creating-python-programs)
* [为什么应该使用 IDE 进行 Python 编程](https://python.land/creating-python-programs/using-a-python-ide)
* [如何安装 VSCode](https://python.land/creating-python-programs/installing-and-starting-vscode)
* 写 Python 程序需要哪些 [VSCode Python 扩展](https://python.land/creating-python-programs/vscode-python-extensions)
* VSCode GUI 之旅
目录
* [在 VSCode 中创建或打开一个 Python 项目](#Create_or_open_a_Python_project_in_VSCode "Create or open a Python project in VSCode")
* [在 VSCode 中运行 Python](#Run_Python_in_VSCode "Run Python in VSCode")
* [在 VSCode 中调试 Python](#Debug_Python_in_VSCode "Debug Python in VSCode")
* [运行选择或当前行](#Run_selection_or_current_line "Run selection or current line")
* [终端运行代码](#Running_code_from_the_terminal "Running code from the terminal")
* [VSCode 和 Python Virtualenv](#VSCode_and_Python_Virtualenv "VSCode and Python Virtualenv")
* [在 VSCode 中格式化 Python](#Formatting_Python_in_VSCode "Formatting Python in VSCode")
* [保存工作空间](#Saving_a_workspace "Saving a workspace")
* [继续学习](#Keep_learning "Keep learning")
## 在 VSCode 中创建或打开一个 Python 项目
VSCode 窗口总是显示一个工作区。如果您愿意,一个工作区可以依次显示多个文件夹(或者:项目)。您可以打开多个工作区,每个工作区都有自己的窗口。然而,你通常一次只做一个项目。这样做时,一个窗口一个工作区就足够了。
创建项目很简单;这是一个用 VSCode 打开的目录。如果您在一个终端上,无论是在 Linux、MacOS 还是 Windows 上,您都可以创建一个新项目并用 VSCode 打开它,如下所示:
```py
$ mkdir myproject
$ cd myproject
$ code .
```
code 命令是打开 VSCode 窗口的便捷快捷方式。如果您愿意,也可以从菜单中打开文件夹:`**File -> Open Folder**`。
第一次使用 VSCode 打开项目时IDE 会使用项目特定的设置创建一个新文件`.vscode/settings.json`。如果使用版本控制系统,您可能希望添加。因为您的同事可能有自己的设置和偏好,甚至使用完全不同的 IDE。
## 在 VSCode 中运行 Python
以下分步指南可帮助您正确设置 VSCode 以运行 Python 代码。
### 步骤 1:选择 python 解释器
一个系统可以有多个 Python 解释器。为您的项目使用正确的解释器非常重要,因为 VSCode 使用它来运行和调试您的代码并提供自动完成等功能。VSCode 通常会尽力自动检测可用的 Python 解释器。事实上VSCode 甚至在你的项目文件夹中检测到一个 [virtualenv](https://python.land/virtual-environments/virtualenv) 。例如virtualenv 还包含一个 Python 解释器VSCode 可以使用它。此外,它还支持增强的虚拟环境管理器,如 [Pipenv](https://python.land/virtual-environments/pipenv) 。
#### 命令选项板
我们将使用一个叫做命令面板的特性来设置解释器。命令面板使您可以快速访问 VSCode 提供的所有功能。它允许你只用键盘做几乎所有的事情。它很棒,而且真正节省时间,所以我建议你尽早习惯它。
快捷键**' Control+shift+P '**(Windows/Linux)或者 **cmd + shift + P** (MacOS)可以让你快速打开命令托盘。如果你需要学习一条捷径,那就是这条!或者,您可以使用菜单:**“视图**->-**命令托盘……**”
在命令面板打开的情况下开始键入Python:select interpreter。你会很快发现自动完成功能会帮你解决问题您不必键入整个文本:
![Open VSCode command palerte](img/f2107623c1ad0ab303bec2e5dd91530d.png)
使用命令托盘快速找到您要查找的内容
如果你使用的话,最好从你的[虚拟环境](https://python.land/virtual-environments/virtualenv)中选择解释器。如果没有,选择一个合适的版本。如果不知道选哪个,就选最新版本的 Python 3。
如果你别无选择,确保你的系统上已经安装了 Python并选择手动输入你的解释器的路径。你不应该有VSCode 应该能够检测到正确安装的 Python 解释器。
![VSCode command palette select interpreter](img/ae229dabff12f8a5948489862e307f1e.png)
选择适合您项目的 Python 版本
在 Windows 中,这看起来像这样:
![](img/04e118f846c91ac55d5a29a85c041adf.png)
在 Windows 中选择 Python 解释器
### 步骤 2:在 VSCode 中创建新的 Python 项目
当您第一次打开 VSCode 时,您将从一个空的工作区开始。我们先打开一个文件夹,在里面可以开始实验。我事先创建了一个,但是你也可以使用“打开文件夹”对话框来创建一个。具体工作方式因操作系统而异。在 Windows 中,您可以单击“新建文件夹”,例如:
![Open folder in workspace](img/6741eadd4b37d301f25a7f8f888b0901.png)
### 步骤 3:在 VSCode 中创建和运行 Python 文件
配置好解释器后,我们现在可以运行 Python 程序了。让我们创建一个简单的测试程序。通过点击左侧浏览器中的“新建文件”按钮或使用“文件”菜单创建一个新文件。随便你怎么称呼它,我把我的叫做`vscode_playground.py`。如果您还没有这样做VSCode 可能会要求您选择一个 Python 解释器。去选一个吧。
将以下程序复制并粘贴到新创建的文件中:
```py
import sys
if len(sys.argv) == 1:
name = sys.argv[1]
else:
name = 'stranger'
print(f'Hi there, {name}')
```
这段代码将查看脚本是否收到了一个参数。如果是这样,它将把它赋给`name`变量。如果不是,它会叫你陌生人。我故意犯了一个错误,我们稍后将尝试调试。
要运行这个文件,你可以使用菜单 **Run - > Run 不调试**或者按 **Control + F5** (Windows 和 Linux)或者 **cmd + F5** (MacOS)。接下来发生的是 VSCode 打开一个运行该文件的集成终端窗口。由于我们故意犯了一个错误,您应该会看到类似于以下内容的错误:
```py
Traceback (most recent call last):
File "vscode_playground.py", line 4, in <module>
name = sys.argv[1]
IndexError: list index out of range
```
这是它在 Windows 上的样子:
![](img/1acb9552fddc9bce189caf13865beb5a.png)
我们的程序在 VSCode 中运行(故意出错)
## 在 VSCode 中调试 Python
调试是使 IDE 比简单的编辑器更强大的特性之一。这并不难做到,并且可以为您节省大量的时间来疯狂地向代码中添加 print 语句。因此,让我们现在就花一点时间来学习基础知识吧!
Thank you for reading my tutorials. I write these in my free time, and it requires a lot of time and effort. I use ads to keep writing these *free* articles, I hope you understand! **Support me by disabling your adblocker on my website** or, alternatively, **[buy me some coffee](https://www.buymeacoffee.com/pythonland)**. It's much appreciated and allows me to keep working on this site!
### 调试当前文件
我们不再使用“不调试就运行”选项,而是选择“**运行- >开始调试**”选项。或者,你可以简单地按下 **F5** 。VSCode 会问你想做什么。因为我们想运行当前文件选择“Python 文件”。
程序将再次因出错而崩溃。但是调试器没有停止,而是进来并突出显示发生错误的那一行。既然它抱怨列表索引超出范围,让我们更仔细地检查一下`sys.argv`列表!
当悬停在文本`sys.argv`上时,您会看到一个弹出窗口,允许您详细检查变量。当悬停在`sys`上时,您会看到 sys 模块的许多内部组件。当鼠标悬停在`argv`上方时,你会看到`argv`的内容:
![](img/5b56514a5311b0a228eaa8507299e512.png)
检查 argv 的含量
即使我们没有提供参数,`argv`仍然包含一个元素:当前脚本的完整路径。一些我们没有预料到的事情!操作系统总是给我们程序的名字作为 argv 的第一个参数。我们现在需要做的就是将比较改为:if len(sys.argv) == 2。按下右上角的重启按钮或按下 **Control + Shift + F5****cmd + shift + F5** 重启程序。它现在应该输出“你好,陌生人”并正常退出。
### 创建运行配置
您已经学习了通过运行当前文件开始调试的快速方法。但是,如果需要更多选项,可以创建一个或多个运行配置。这样的配置允许你存储特定的参数等等,所以我们可以完全按照我们想要的方式来启动程序。
要创建运行配置,点击**运行- >添加配置**。再次选择“Python 文件”选项。VSCode 将在。vscode 文件夹。该文件预填充了一个示例配置。修改 JSON如下所示:
```py
{
"version": "0.2.0",
"configurations": [
{
"name": "Run with argument",
"type": "python",
"request": "launch",
"program": "vscode_playground.py",
"console": "integratedTerminal",
"args": ["Erik"]
}
]
}
```
这个配置为脚本提供了一个参数:名称“Erik”。注意它还专门启动了`vscode_playground.py`而不是当前文件。现在,您可以使用此配置启动调试器。但是首先,让我们打开左边面板中的运行/调试视图,通过点击上面有小 bug 的大运行按钮,或者点击 **Ctrl+Shift+D** 或者 **Cmd+Shift+D** :
![](img/44f3b08b70d28b3c7fc4ab480d04b66a.png)
通过单击按钮或按 Ctrl+Shift+D 打开运行和调试视图
在这个视图的顶部您应该会看到新创建的配置。点击旁边的播放按钮开始播放。现在输出应该是“你好Erik”。
### 断点
在某些时候,你想使用所谓的断点:在程序中的某一行,你想显式地暂停执行,或者休息一下,这样你就有机会检查程序在该点的状态。添加断点非常容易。在所谓的“装订线”中,即文件左侧显示行号的地方,您可以在行号前单击鼠标右键。当您悬停在那里时,应该会出现一个模糊的红点,一旦您单击它,它就会变成鲜红色:
![](img/c470765f9c5ffa02da07d45c520f1c06.png)
断点,执行将在此处暂停
如果您现在运行程序,它将在断点处暂停,允许您在该时间点检查变量。要继续,您可以单击继续按钮或按下 **F5** 。调试器将继续执行,直到遇到另一个断点或程序完成。
或者,您可以使用“单步跳过”(F10)、“单步进入”(F11)和“单步退出”(F12)按钮从这里开始逐步执行程序。这样,您可以一行一行地执行程序,并有选择地进入和退出 [Python 函数](https://python.land/introduction-to-python/functions)调用。
现在,您已经具备了在 VSCode 中开始调试的坚实基础知识。要了解更多细节,我想让您参考 VSCode 文档的[调试部分,这应该是我到目前为止所教授内容的一个很好的延续。](https://code.visualstudio.com/docs/editor/debugging)
## 运行选择或当前行
另一个有用的特性是运行代码选择或当前行的能力。这并不总是有用的:通常,一行代码或代码选择很大程度上取决于它的上下文。但有时,它会派上用场。要运行代码选择或当前行,按下 **Shift+Enter** 或使用命令调板并搜索“在终端中运行选择”。
代码在一个 [Python REPL](https://python.land/introduction-to-python/the-repl) 中运行,一旦完成,这个 REPL 就保持打开,这样你就可以实验、检查变量等等。例如,如果您“运行”一个函数,现在您可以从 REPL 调用该函数,因为它是在那里定义的。
一个很酷的特性是,运行选择或当前行的所有后续命令都在同一个 REPL 中执行,保持状态不变。因此,如果您更改函数并再次“运行”它,函数会在 REPL 中重新定义。这是一个测试你刚刚写的代码的好方法,但是它不能代替适当的单元测试。
## 终端运行代码
VSCode 有一个集成的终端,非常有用。有的人从来不用,有的人一直用。我属于最后一类人:我从命令行运行我的代码,除非我在调试。我也在命令行上做版本控制。我发现熟悉所有命令行工具非常有用。它允许我在没有 IDE 的情况下执行关键任务,例如,在其他人的 PC 上、远程终端上,或者仅仅是快速打开的终端窗口,而不是打开完整的 IDE。
除了我个人的偏好之外,还有几个使用终端比 GUI 更容易的用例。例如:当您使用命令行选项进行测试时。您可以在运行配置文件中添加选项,但是如果这些选项不断变化,使用终端会更快。
因此,让我们也探索一下如何从集成的终端窗口运行您的代码。
### 第一步:打开内置终端
使用命令面板运行**终端:创建新的集成终端**,或者使用快捷键 **Ctrl+Shift+`** (那是一个反勾)。屏幕底部应该会打开一个终端。通过再次按下该组合键,您可以创建更多的终端窗口。重复按 **Ctrl+`** 可以快速显示和隐藏终端面板。
### 步骤 2:运行您的代码
不要忘记[激活你的虚拟环境](https://python.land/virtual-environments/virtualenv#Python_venv_activation),如果你有一个的话。接下来,像处理任何其他文件一样运行 Python 文件:
```py
$ python3 vscode_playground.py Erik
Hi there, Erik
```
## VSCode 和 Python Virtualenv
使用 Python [虚拟环境](https://python.land/virtual-environments)时,需要让 VSCode 知道。如前所述,这样做的方法是从您的虚拟环境中选择解释器,而不是从系统范围内选择。
为了测试这一点,让我们先[创建一个虚拟环境](https://python.land/virtual-environments/virtualenv#Creating_a_Python_venv):
`python3 -m venv venv`
从截图中可以看出VSCode 几乎立刻就注意到我们创建了这个 venv并提供使用它:
![](img/47dc0f5957ce6eca78b57b6aa8a6234c.png)
点击是,就大功告成了!或者,你可以在命令面板(Ctrl+Shift+P)中通过输入“选择解释器”并点击“Python:选择解释器”来手动选择这个 venv
## 在 VSCode 中格式化 Python
您可以在 VSCode 中格式化 Python如果您点击:
* Windows: **Shift + alt + F**
* Mac: **Shift + Option + F**
* Linux: **Ctrl+Shift+I** (那是大写的 I)。
* 或者打开命令调板(ctrl + shift + p)开始输入‘格式化文档’。
默认情况下VSCode 格式化当前文档。如果您还没有这样做,它会询问您是否要安装 autopep8、black 或 yapf 之类的格式化程序。选择一个(默认,如果你不确定),让它安装。
从现在开始,如果您在编辑 Python 文件时按下 format 快捷键,您会注意到您的文件会根据格式化程序的默认规则进行格式化。如果你想定制这些规则,你将需要查找(例如,在 Google 上)如何为你选择的特定格式化程序定制规则。通常,您可以通过在项目的主目录中创建特定文件来添加或修改规则。
## 保存工作空间
最后,您可能想要保存您的工作空间。不过,这不是必须的。您可以简单地再次打开该文件夹。像启动配置这样的定制保存在(隐藏的)中。vscode 目录如果打开该文件夹VSCode 会找到它。然而,如果你在你的工作空间中打开了多个文件夹,并且不想连续重复这些步骤,你可以使用**文件- >保存工作空间为..**菜单。
## 继续学习
阅读这些文章以了解有关 Visual Studio 代码及其功能的更多信息:
* [正确安装 Python](https://python.land/installing-python)
* [为什么应该使用 IDE 进行 Python 编程](https://python.land/creating-python-programs/using-a-python-ide)
* [如何安装 VSCode](https://python.land/creating-python-programs/installing-and-starting-vscode)
* VSCode GUI 之旅
* [VSCode Python 扩展](https://python.land/creating-python-programs/vscode-python-extensions)
以下外部链接可能也有帮助:
* [官方 VSCode 文档](https://code.visualstudio.com/docs)