| |
在Win上做Python开发?当然是用官方的MS Terminal和VS Code了 |
|
珠江路在线
2019年9月27日
【
转载
】机器之心Pro 编辑:
|
|
|
选自 Real Python
作者:Jon Fincher
机器之心编译
在 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 拜访树莓派等 。下图 展示了这种多选项卡的 支撑状况:
此外,除了 性能外,更主要的便是颜值,就像我们常用 zsh 来提供更 好看的命令行一样 。 固然 zsh 当前的 GitHub 珍藏量已经达到 9.4 万了,但 ReadMe 文档清晰地写着它最好用于 macOS 或 Linux 。而新公布的 MS Terminal 不管在界面还是在文字 格调,都以往都强了众多 。
背景透明度、文字高亮都 能够自行定义,还能定义 emoji 等符号 。如下为 根本的 展示,我们 能够依据自己的需求调整整个界面 。
整个 名目还在 踊跃开发中,众多 性能也都在完善与添加 。不过既然是微软官方 保护的开源 名目,那么我们还是十分有 信念的,至少在命令行 部分 能够减低开发过程中的各种报错 。固然假如读者在 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 扩充
如上所述,VS Code 通过 详尽记录的 扩充模型 支撑多种编程语言的开发 。Python 扩充使消费者 能够在 Visual Studio Code 中进行 Python 开发, 存在以下 特色:
- 既 支撑 Python 3.4 及更高版本,也 支撑 Python 2.7 版本
- 使用 IntelliSense 实现代码补全
- Linting
- 调试 支撑
- 代码片段 支撑
- 单元测试 支撑
- 自动 使用 conda 和 虚构环境
- 在 Jupyter 环境和 Jupyter 笔记本中进行代码编辑
Visual Studio Code 扩充不只仅 存在编程 性能:
- Keymaps 同意已经 相熟 Atom,Sublime Text,Emacs,Vim,PyCharm 或 其余环境的消费者更加方便上手 。
- 主题自定义 UI,无论您喜爱在璀璨,黑暗或更 丰盛多彩的地方进行编码 。
- 语言包提供当地化体验 。
以下是 比较有用的一些 其余 扩充和设置:
- GitLens 直接在编辑视窗中提供了大量有用的 Git 性能,包含非责任 诠释和存储库开发 性能 。
- 通过从菜单中 取舍 File, Auto Save, 能够轻松进行自动 保留 。默许延迟 工夫为 1000 毫秒,也 能够再一次配置 。
- Settings Sync 同意消费者借助 GitHub 在不同的 安装中同步自己的 VS Code 设置 。假如消费者在不同的计算机上工作,这有助于运行环境 维持 统一 。
- Docker 让消费者 能够 快捷轻松地 使用 Docker,协助创作 Dockerfile 和 docker-compose.yml,打包和部署 名目,甚至为 名目生成适当的 Docker 文件 。
固然,在 使用 VS Code 时,你可能会发现 其余有用的 扩充 。请在评论中分享你的发现和设置!
单击 运动栏(Activity Bar)上的「 扩充」图标 能够 拜访和安装新 扩充和主题 。消费者 能够输入 要害词来查找 扩充程序,以多种 模式对查找 后果进行排序, 快捷轻松地安装 扩充程序 。在本文中,在 运动栏的 Extensions 项中键入 python 并单击 Install 即可安装 Python 扩充:
消费者 能够通过 雷同的 模式查找和安装上述任何 扩充 。
Visual Studio Code 配置文件
值得一提的是,Visual Studio Code 可通过消费者和工作区设置(User and Workspace Settings)实现高度配置 。
消费者设置(User settings)在全部 Visual Studio Code 实例中都是全局性的,而工作区设置(Workspace Settings)是特定文件夹或 名目工作区的当地设置 。工作区设置为 VS Code 提供了极大的灵便性,工作区设置会在整篇文章中提到 。工作区设置以.json 文件的 模式存储在名为.vscode 的 名目工作区当地文件夹中 。
启动新的 Python 程序
让我们以一个新的 Python 程序来探究 Visual Studio Code 中的 Python 开发 。在 VS Code 中,键入 Ctrl + N 打开一个新文件 。(你也 能够从菜单中 取舍「文件」-「新建」 。)
无论你如何操作,你都应该看到一个 类似于以下内容的 VS Code 窗口:
打开新文件后,你即 能够输入代码 。
输入 Python 代码
作为测试,我们 能够 快捷编码埃拉托斯特尼筛法(Sieve of Eratosthenes,它 能够找出小于已知数的全部质数) 。在刚 打开的新选项卡中键入以下代码:
等等,这是怎么回事?为何 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.x 或 Anaconda),则 能够通过单击语言模式 批示器或者从命令面板中 取舍 Python: Select Interpreter 来更改 VS Code 所要 使用的 Python 解释器 。默许状况下,VS Code 支撑 使用 pep8 格局,但你也 能够 取舍 black 或 yapf 。
现在 能够添加其余的 Sieve 代码 。若要查看 IntelliSense,请直接键入此代码而不要剪切和粘贴,你应该看到如下内容:
当键入代码时,VS Code 会对 for 和 if 语句下面的 前进行自动、适当的缩进,添加右括号,并给出内容 揭示 。
运行 Python 代码
现在代码已经 实现,你 能够运行它了 。没有必要让编辑器执行此操作:Visual Studio Code 能够直接在编辑器中运行此程序 。 保留文件(Ctrl + S), 而后在编辑器窗口中单击右键并 取舍在终端(Terminal)中运行 Python 文件(Run Python File):
你会看到终端窗格显示在窗口的底部,并显示代码输出 后果 。
编辑现有的 Python 名目
在 Sieve of Eratosthenes 示例中,你 创立了一个 Python 文件 。作为一个例子这很不错,但众多时候,你需求 创立更大的 名目,并在更长的 工夫内在它上面进行开发 。
典型的新 名目工作流程可能如下所示:
- 创立一个文件夹来 保留 名目(可能包含一个新的 GitHub 名目)
- 更改为新文件夹
- 使用命令 code filename.py 创立初始 Python 代码
在 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/project
code .
当你这种 模式 打开时,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 提供的诸多 性能 能够媲 好看的代码调试器,包含:
- 自动变量跟踪
- 监看 抒发式
- 断点
- 调用堆栈 审查
你 能够在 运动栏上的 Debug 视图中看到这些 性能:
调试器 能够操纵在内置终端或外部终端实例中运行的 Python 利用程序 。它 能够附加到已经运行的 Python 实例中,甚至 能够调试 Django 和 Flask 利用程序 。
在单个 Python 文件中调试代码就像按 F5 启动调试器一样 容易 。你 能够按 F10 和 F11 分别跳过和进入函数,并按 Shift + F5 退出调试器 。按 F9 设置断点,或者通过单击编辑器窗口中的左空白(lift margin)进行设置 。
在开始调试更复杂的 名目(包含 Django 或 Flask 利用程序)之前,你首先需求设置并 取舍调试配置 。设置调试配置 绝对 容易 。从 Debug 视图中 取舍 Configuration 下拉列表(drop-down), 而后 取舍 Add Configuration 和 Python:
Visual Studio Code 将在当前名为.vscode/launch.json 的文件夹下 创立一个调试配置文件,它同意消费者设置特定的 Python 配置以及调试 Django 和 Flask 等特定 利用程序的设置 。
你还 能够执行远程调试,并调试 Jinja 和 Django 模板 。关闭编辑器中的 launch.json 文件, 而后从 Configuration 下拉列表中为 利用程序 取舍正确的配置 。
Git 集成
VS Code 不只内置对源代码操纵治理的 支撑,还 支撑 Git 和 GitHub 。你 能够在 VS Code 中安装对 其余 SCM 的 支撑,并列 使用它们 。消费者 能够从 Source Control 视图 拜访源代码操纵:
假如你的 名目文件夹包含.git 文件夹,VS Code 会自动 打开全部 Git / GitHub 性能 。你 能够执行以下诸多 使命:
- 将文件提交给 Git
- 将更改推送到远程存储库(remote repo)并从中 存入更改
- check-out 现有或 创立新的分支和标签(branch and tag)
- 查看并解决合并 摩擦(merge conflict)
- 查看差别(view diffs)
全部这些 性能都 能够直接从 VS Code UI 获得:
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 编辑器,相信不会令你 绝望的 。
参考文章:
- https://realpython.com/python-development-visual-studio-code/
- https://devblogs.microsoft.com/commandline/introducing-windows-terminal/
