目录表
安装和配置Visual Studio Code用于Python开发
o 用于Python开发的扩展
o Visual StudioCode配置文件
启动一个新的Python程序
o输入Python代码
o运行Python代码
o Python Linting支持
编辑现有Python项目
测试支持
调试支持
git集成
结论
程序员可以使用的最酷的代码编辑器之一——Visual Studio Code[1]——是一个开源的、可扩展的、轻量级的编辑器,它可以在所有平台上使用。正是这些特性使得Microsoft[2]的Visual Studio Code非常受欢迎,并且是一个很好的Python开发平台。
在本文中,你将了解在Visual Studio Code中进行Python开发,包括怎样:
安装Visual Studio Code
发现并安装使Python开发变得容易的扩展
编写一个简单的Python应用程序
学习如何在VS Code中运行和调试现有Python程序
将Visual Studio Code连接到Git和GitHub,与世界分享你的代码
我们假设你熟悉Python开发,并且已经在系统上安装了某种形式的Python (Python 2.7、Python 3.6/3.7、Anaconda或其他)。确保你的Ubuntu和Windows的屏幕截图和演示程序都可用。由于Visual Studio Code可以运行在所有主要平台上,你可能会看到略有不同的UI元素,可能需要修改某些命令。
安装并配置Visual Studio Code用于Python开发
在任何平台上安装Visual Studio Code都是非常容易[3]的。Windows[4]、Mac[5]和Linux[6]都有完整的安装教程,编辑器每月更新一次,提供新特性和bug修复。你可以在Visual Studio Code网站[7]上找到所有信息:
你可能会疑惑,Visual Studio Code(简称VS Code)除了与其基于windows的大型同名软件Visual Studio[8]名字相同之外,几乎没有其他相同之处。
Visual Studio Code除具有对多种语言的内置支持之外,还具有对其他语言丰富的生态系统支持的扩展模型。VS Code每月更新一次,你可以在Microsoft Python博客[9]上了解最新情况。微软甚至公开VS Code GitHub repo[10]源来允许任何人克隆和贡献代码。(Cue the PR flood.)
VS Code用户界面[11]有很好的文档说明,所以我就不在这里赘述
用于Python开发的扩展
如上所述,VS Code通过良好文档化的扩展模型[12]支持多种编程语言的开发。Python扩展[13]允许我们可以在Visual Studio Code中进行Python开发,它具有以下特性:
支持Python 3.4及以上版本,以及Python 2.7
使用IntelliSense[14](智能感知)补全代码
Linting(代码检查)[15]
调试支持[16]
代码片段[17]
单元测试支持[18]
conda和虚拟环境[19]的自动使用
在Jupyter环境[20]和Jupyter笔记本[21]中进行代码编辑
Visual Studio Code扩展不仅包括编程语言功能:
Keymaps[22]让已经熟悉Atom、Sublime Text[23]、Emacs[24]、Vim[25]、PyCharm或其他环境的用户感到宾至如归。
Themes[26]允许自定义UI,无论你喜欢在浅色、深色或其他更丰富多彩的环境中编写代码。
Language packs[27]提供本地化体验。
下面是一些我发现的有用的扩展和设置:
GitLens[28]在你的编辑窗口中提供了大量有用的Git特性,包括blame annotations 和repository exploration特性。
自动保存是很容易开启的,你可以从菜单选择File,Auto Save来开启。默认延迟时间是1000毫秒,这也是可配置[29]的。
Settings Sync[30]允许你使用GitHub同步不同安装环境的VS Code设置。如果你在不同的机器上工作,这有助于保持跨机器环境的一致性。
Docker[31]让你可以快速、轻松地使用Docker进行工作(它帮助作者生成了Dockerfile和Docker –compose.yml文件),打包和部署项目,甚至为你的项目生成合适的Docker文件。
当然,在使用VS Code时,你会发现其他有用的扩展。请在评论区[32]分享你的发现和设置!
你可以通过单击活动栏上的Extensions图标来发现和安装新的扩展和主题。你可以使用关键字搜索扩展,以多种方式对结果进行排序,并快速轻松地安装扩展。对本文来说,通过在活动栏的Extensions项中输入python并点击Install来安装Python扩展:
你可以以相同的方式查找并安装上面提到的任何扩展。
Visual Studio Code配置文件
值得一提的是,Visual Studio Code可以通过user and workspace settings[33](用户和工作区设置)进行高度配置。
用户设置是跨所有Visual Studio Code实例的全局设置,而工作区设置是特定文件夹或项目工作区的本地设置。工作区设置为VS Code提供了极大的灵活性,在本文中我将始终调用工作区设置。工作区设置以.json文件的形式存储在名为.vscode的项目工作区本地文件夹中。
开始一个新的Python程序
让我们从一个新的Python程序开始探索Visual Studio Code中的Python开发。在VS Code中,按下∧Ctrl+N打开一个新文件。(也可以从菜单中选择File, New来打开)
注意:Visual Studio Code UI提供了命令面板[34],你可以在其中搜索和执行任何命令,而不需要离开键盘。使用∧Ctrl+Shift+P打开命令面板,输入File: New File,然后按Enter键打开一个新文件。
无论你如何打开一个新文件的,你都会看到一个VS Code窗口,它看起来类似于下面的图:
打开新文件之后,你就可以输入代码了。
输入Python代码
对于我们的测试代码,让我们快速编写Sieve of Eratosthenes[35]项目(它查找所有小于给定数字的素数)。在刚刚打开的新选项卡中输入以下代码:你会看到类似于这样的结果:
等等,发生了什么?为什么Visual Studio Code没有进行任何关键字高亮显示、自动格式化或其他有用的事情呢?它做了什么?
答案是,现在VS Code还不知道它处理的是哪种文件。这个缓冲区名为Untitled-1,在窗口的右下角查看,你会看到Plain Text字样。
要激活Python扩展名,将文件(通过从菜单中选择File、Save、从命令面板中输入File: Save File,或者只使用∧Ctrl+S)保存为sieve.py。VS Code将看到.py扩展名,并正确地将文件解释为Python代码。现在你的窗口看起来应该是这样的:
这就好多了!VS Code自动将文件重新格式化为Python,你可以通过检查左下角的语言模式来验证这一点。
如果你安装了多个Python版本 (如Python 2.7、Python 3或者Anaconda)。你可以通过单击语言模式指示器或从命令面板中选择Python: Select Interpreter,来更改VS Code默认使用哪种Python解释器。VS Code默认支持使用pep8进行格式化[36],你也可以选择black或yapf。
现在我们来添加Sieve代码的其余部分。要查看IntelliSense是否在工作,直接输入这段代码,不能剪切和粘贴,你会看到如下所示:
下面是一个基本的Sieve of Eratosthenes的完整代码:
当你输入这段代码时,VS Code会自动缩进for和if语句下面的行,添加结束括号,并为你提供建议。这就是IntelliSense为你带来的力量。
运行Python代码
现在代码已经完成,你可以运行它了。不需要离开编辑器就可以做到这一点:Visual Studio Code可以直接在编辑器中运行这个程序。保存文件(使用∧Ctrl+S),然后在编辑器窗口右键单击,选择Run Python file in Terminal:
你应该会看到终端窗格出现在窗口的底部,并显示代码输出。
Python Linting支持
你在输入时可能会看到一个弹出窗口,提示无法使用linting。你可以从该弹出窗口中快速安装linting支持,它默认为PyLint。VS Code还支持其他linter。以下是撰写本文时可用的完整列表:
pylint
flake8
mypy
pydocstyle
pep8
prospector
pyllama
bandit
Python linting页面[37]有关于如何设置每个linter的完整详细信息。
注意:linter的选择是一个项目工作区设置,不是全局用户设置。
编辑现有Python项目
在Sieve of Eratosthenes示例中,你创建了一个Python文件。作为一个例子这很不错,但是很多时候,当你需要创建大型项目,并在很长的一段时间内要在它上面进行开发。一个典型的新项目工作流程可能是这样的:
创建一个文件夹来保存项目(其中可能包括一个新的GitHub项目)
切换到新文件夹
使用命令code file .py创建初始Python代码
在Python项目上使用Visual Studio Code (而不是单个Python文件)可以提供更多的功能,可以让VS Code发挥它的特长。我们来看看它是如何处理一个大型项目的。
在前几年的后期,当我还是一个很年轻的程序员时,我编写了一个计算器程序,它使用Edsger Dijkstra的调度场算法(shunting yard algorithm)[38]适配来解析用中缀表示法编写的等式。
为了演示Visual Studio Code以项目为中心的特性,我开始在Python中将调度场算法(shunting yard algorithm)重新创建为一个Python等式计算库[39]。要继续后续操作,请随意将它从repo克隆到本地。
在本地创建文件夹后,你可以在VS Code中快速打开整个文件夹。我喜欢的方法(如上所述)修改如下,因为我已经创建了文件夹和基本文件:
VS Code理解并将使用以这种方式打开时它读取到的任何virtualenv[40]、pipenv[41]或conda[42]环境。你甚至不需要一开始就启动虚拟环境!你甚至可以从用户界面打开文件夹,从菜单中使用File,Open Folder打开文件夹,或使用快捷键∧Ctrl+K、∧Ctrl+O从键盘打开文件夹,或者从命令面板使用File: Open Folder打开。
对于我的等式计算库项目,以下是我将看到的:
当Visual Studio Code打开文件夹时,它还会打开上次打开的文件。(这是可配置的)。你可以打开、编辑、运行和调试任何列出的文件。左侧活动栏中的Explorer视图提供文件夹中所有文件的视图,并显示当前选项卡集中有多少未保存的文件。
测试支持
VS Code可以自动识别在unittest框架、pytest或Nose框架中编写的现有Python测试[43](如果这些框架已经安装在当前环境中)。我在unittest中为等式计算库编写了一个单元测试[44],你可以在本例中使用它。
要运行现有的单元测试,可以在项目中的任何Python文件中右键单击并选择Run Current Unit Test File。系统会提示你指定测试框架、在项目中搜索测试的位置以及测试使用的文件名模式。
所有这些都会作为工作区设置保存为本地.vscode/settings.json文件,你也可以在此处进行修改。对于这个等式项目,你选择unittest、当前文件夹和*_test.py模式就好。
一旦设置好测试框架并且编辑器发现了测试,你可以在状态栏上单击Run Tests并从命令面板中选择一个选项来运行所有的测试:
你甚至可以通过在VS Code中打开测试文件,单击状态栏上的Run Tests,并选择Run Unit Test Method…和要运行的特定测试来运行单个测试。这使得定位单个的测试失败和重新运行失败的测试变得非常简单,也是一个很棒的节省时间的方法!测试结果显示在Python Test Log下的Output窗口中。
调试支持
虽然VS Code是一个代码编辑器,但是在VS Code中直接调试Python[45]也是可以的。VS Code提供了许多你所希望的好的代码调试器具有的特性,包括:
自动变量跟踪
监视表达式
断点
调用栈检查
你可以在活动栏的Debug视图中看到它们:
调试器可以控制在内置终端或外部终端实例中运行Python应用程序。它也可以附加到已经运行的Python实例上,甚至可以调试Django[46]和Flask[47]应用程序。
在单个Python文件中调试代码与使用F5启动调试器一样简单。使用F10和F11可以分别跳出和进入函数,使用Shift+F5退出调试器。可以使用F9设置断点,也可以使用鼠标在编辑器窗口的左侧空白处单击来设置。
在开始调试更复杂的项目(包括Django或Flask应用程序)之前,你需要先进行设置,然后选择调试配置。设置调试配置相对简单。在Debug视图中,选择Configuration下拉菜单,然后点击Add Configuration,并选择Python
:
Visual Studio Code将在当前文件夹下创建一个名为.vscode/launch.json的调试配置文件,它允许你设置特定的Python配置[48]以及调试特定应用程序[49](如Django和Flask)的设置。
你甚至可以执行远程调试,以及调试Jinja和Django模板。关闭编辑器中的launch.json文件,然后从Configuration下拉菜单中为你的应用程序选择合适的配置。
Git集成
VS Code内置了对源代码控制管理[50]的支持,并附带了对Git和GitHub的开箱即用支持。你可以在VS Code中安装对其他SCM的支持,并一起使用它们。可以从Source Control视图中访问源代码管理:
如果你的项目文件夹包含一个.git文件夹,VS Code会自动打开Git/GitHub[51]的全部功能。以下是一些你可以完成的任务:
将文件提交[52]到Git
从远程repos[53]推送更改和提取更改
检查现有的或创建新的分支和标记[54]
查看并解决合并冲突[55]
查看不同[56]
所有这些功能都可以直接从VS Code用户界面中调用:
VS Code还能识别在编辑器之外所做的更改,并正确处理。
在VS Code中提交你最近的更改是一个相当简单的过程。在Source Control视图中,修改后的文件显示为M标记,而未跟踪的新文件显示为U标记。将鼠标悬停在文件上,然后单击加号(+),就可以看到你的更改。在视图顶部添加提交消息,然后单击复选框提交更改:
你还可以在VS Code中向GitHub推送本地提交。从“Source Control视图”菜单中选择“Sync(同步)”,或者单击分支指示器旁边的状态栏[57]上的“Synchronize Changes(同步更改)”。
结论
Visual Studio Code是最酷的通用编辑器之一,也是Python开发的最佳候选。在本文中,你了解到:
如何在任何平台上安装VS Code
如何查找和安装扩展来支持Python特有的特性
VS Code如何让编写一个简单的Python应用程序变得更容易
如何在VS Code中运行和调试现有Python程序
如何在VS Code中使用Git和GitHub存储库
Visual Studio Code已经成为我开发Python和处理其他任务的默认编辑器,我希望你能给它一个机会,让它也成为你的编辑器。
如果你有任何问题或意见,请在下面的评论区留言。Visual Studio Code网站[58]上还有很多我们这里没有介绍到的信息。
作者在此感谢微软Visual Studio Code团队的Dan Taylor[59]为本文所花费的时间和提供的宝贵信息。
领取专属 10元无门槛券
私享最新 技术干货