在 Windows 上怎样做 Python 开发?是像大神那样使用纯文本编辑器,还是用更加完善的 IDE?到底是用自带的命令行工具,还是需要装新的 Terminal?本文将带你了解如何利用微软官方维护的 MS Terminal 与 VS Code,来为 Python 开发保驾护航。
使用 Windows 系统一大好处是它的应用太丰富了,甚至强大的 GPU 也能在闲暇时间做点其它「工作」。然而与 Linux 或 macOS 不同,在 Windows 上做开发总会遇到很多挑战,不论是文件编码、环境控制还是项目编译,开发过程中总会有一些神奇的收获。
这些对于初学者来说尤其突出:我们在安装某个库时可能出现各种依赖项错误,我们在读写文本时出现各种编码错误等等。
那么在 Windows 上如何做 Python 开发呢?相信大神们都会有自己的解决方案,但本文希望介绍微软官方发布的 Terminal 和 Visual Studio Code,希望它们能构建更流畅的 Windows 开发体验。
Visual Studio Code 是程序员可以使用的最酷的代码编辑器之一,是一个可在所有平台上使用的开源、可扩展和轻量级编辑器。正是这些品质使微软的 VS Code 大受欢迎,并成为 Python 开发的绝佳平台。可能很多读者都比较熟悉 PyCharm 与 Jupyter Notebook 等常见的 Python IDE,但 VS Code 一样不会令你失望。
在本文中,你将学习到微软 Terminal 和 Visual Studio Code 的特性,包括:
什么是微软 Terminal
微软 Terminal 效果怎么样
安装 Visual Studio Code
发现并安装 Python 扩展
编写简单的 Python 应用程序
了解如何在 VS Code 中运行和调试现有 Python 程序
将 VS Code 连接到 Git 和 GitHub,与全世界分享你的代码
我们假设你了解 Python 开发,并且已经在系统上安装了某种版本的 Python(如 Python 2.7、Python 3.6/3.7、Anaconda 或其他)。由于 VS Code 可兼容所有主流平台,因此你可能会看到略有不同的 UI 元素,并且可能需要修改某些命令。
新兴的微软 Terminal
Windows Terminal 是一个开源终端应用程序,由微软在今年 5 月份的 Build 开发者大会上推出。MS Terminal 支持 Command Prompt 和 PowerShell 的所有优点,基本上命令行已经可以和 Linux 相融合了,除此之外运行命令提示符也是没问题的。
在 MS Terminal 开源后,GitHub 的 Star 量增长得非常快,目前已经超过了 5 万。这足以说明这个项目非常受关注,在社区的开源改进下,这个工具一定挺好用。
MS Terminal 开源地址:https://github.com/microsoft/terminal
当然,目前 MS Terminal 已经可以直接下载安装程序了,社区的体验也非常不错。因此如果我们在 Windows 上做 Python 开发,命令行工具就可以采用 MS Terminal,它能解决很大一部分的包安装、环境控制等问题。
MS Terminal 的效果怎么样
MS Terminal 最核心的功能就是支持多条选项卡,且每一个选项卡都可以连接到命令行 shell 或应用,例如 Command Prompt 或通过 SSH 访问树莓派等。下图展示了这种多选项卡的支持情况:
整个项目还在积极开发中,很多功能也都在完善与增加。不过既然是微软官方维护的开源项目,那么我们还是非常有信心的,至少在命令行部分可以降低开发过程中的各种报错。当然如果读者在 Windows 上有更好的命令行工具推荐,也可以在文末留言。
安装和配置 VS Code
前面介绍了开发中必不可缺的命令行工具,下面我们该聊一聊 VS Code 了,它是支持 Python 开发的核心工具。下面我们从最初的安装、环境管理到编写、测试、发布代码,介绍我们该如何优雅地使用 VS Code。
在任何平台上都可以安装 Visual Studio Code。官网提供了 Windows、Mac 和 Linux 的完整安装说明,并且会每月更新编辑器,其中包含新功能和错误修正。你可以在 Visual Studio Code 网站上找到所有安装内容:
此外,除名称相近外,Visual Studio Code(简称 VS Code)与基于 Windows 的更大规模的 Visual Studio 几乎没有其他相同的地方。
Visual Studio Code 本身支持多种语言,并且它的一个扩展模型具有支持其他组件的丰富生态系统。VS Code 每月更新,你可以在微软 Python 博客中了解更新信息。任何用户都可以克隆微软的 VS Code Github 仓库并贡献自己的代码。
VS Code UI 已有详细记录,这里不予赘述:
在 Python 项目(而不是单个 Python 文件)上使用 Visual Studio Code 开辟了更多功能,使得 VS Code 能够真正发挥作用。让我们来看看它在更大的项目中如何运作。
假如我们编写了一个计算器程序,该程序通过艾兹格·迪科斯彻(Edsger Dijkstra)调度场算法的一种变体来解析中缀符号(infix notation)编写的方程式。
为了说明 Visual Studio Code 以项目为中心的特征,我们现在开始在 Python 中重新创建调度场算法作为方程式评估库。相应 GitHub 地址:https://github.com/JFincher42/PyEval。
本地文件夹创建后,你可以快速打开 VS Code 中的整个文件夹。由于我们已经创建了文件夹和基本文件,所以首选方法(如上所述)做出如下修正:
cd /path/to/projectcode .
当你这种方式打开时,VS Code 了解并将使用它看到的任何 virtualenv、pipenv 或 conda 环境。你甚至不需要首先启动虚拟环境。通过菜单中的 File, Open Folder、键盘上的 Ctrl+K, Ctrl+O 或者命令面板中的 File, Open Folder 等方式,你可以打开用户界面(UI)上的文件夹。
以下是创建的方程式 eval 库项目:
当 Visual Studio Code 打开文件夹时,它还会再次打开上次打开的文件(这是可配置的)。你可以打开、编辑、运行和调试列出的任何文件。左侧活动栏中的资源管理器视图(Explorer view)提供文件夹中所有文件的视图,并显示当前选项卡集中有多少未保存文件。
代码测试的支持
VS Code 可以自动识别在 unittest、pytest 或 Nose 框架中编写的现有 Python 测试,但前提是在当前环境中安装了这些框架。作者在 unittest 框架中编写了一个用于方程式 eval 库的单元测试,你可以在这个例子中使用它。
若要运行项目中任何 Python 文件的现有单元测试,请单击右键并选择 Run Current Unit Test File。系统将提示指定测试框架,在项目中搜索测试的位置以及测试使用的文件名模式。
所有这些都保存为本地.vscode/settings.json 文件中的工作区设置,并可以进行修改。对于这个等式项目,你可以选择 unittest、当前文件夹和模式 *_test.py。
测试框架设置完成并显示测试后,你可以单击状态栏(Status Bar)上的 Run Tests 并从命令面板中选择一个 option 来运行所有测试:
通过在 VS Code 中打开测试文件,单击状态栏上的 Run Tests,然后选择 Run Unit Test Method 以及其他要运行的特定测试,你还可以运行单个测试。这使得解决单个测试失败并重新运行失败的测试变得很简单,从而能够节省大量时间。测试结果显示在 Python Test Log 下的 Output 窗格中。
调试支持
即使 VS Code 是代码编辑器,直接在 VS Code 中调试 Python 也是可以的。VS Code 提供的诸多功能可以媲美好的代码调试器,包括:
VS Code 还可以识别编辑器外部进行的更改并且正确运作。
在 VS Code 中提交最近的更改相当简单。修改后的文件显示在 Source Control 视图中,并带有 M 标记,而新的未跟踪文件使用 U 标记。将鼠标悬停在文件上然后单击加号(+)可以暂存更改。在视图顶部添加提交消息,然后单击复选标记来提交更改:
你也可以在 VS Code 中将本地提交(local commits)推送到 GitHub。从 Source Control 视图菜单中选择 Sync,或者单击分支指示器(branch indicator)旁边状态栏上的 Synchronize Changes。
所以在作者看来,Visual Studio Code 是最酷的通用编辑器之一,也是 Python 开发的最佳候选工具。希望你也可以在 Python 开发中尝试使用 Visual Studio Code 编辑器,相信不会令你失望的。
参考文章: