在 Visual Studio 上更好开发 Python 的六大功能!
Visual Studio 2013/2015 搭配 Python Tools for Visual Studio 扩充套件让 Visual Studio 能提供对 Python 程序语言高度整合的开发环境,并完整发挥 Visual Studio 强大的功能,协助您在 Visual Studio 内开发 Python 程序上如虎添翼,提升开发效率!
以下将说明六项 Visual Studio 整合开发 Python 程序之优势功能。
- 整合 Python 直译器 (Interpreter) & 互动视窗 (Interactive)
- 整合 Python 虚拟开发环境 (Virtual Environment)
- 整合 Python 套件管理员 (Package Manager)
- IntelliSense 对 Python 完整的支持
- 对 Python 使用侦错模式 (Debugging)
- 跨平台远端侦错 (Remote Debugging)
- 整合 Python 直译器 (Interpreter) & 互动视窗 (Interactive)
Visual Studio 高度整合 Python 直译器,让您能够在开发过程中切换不同版本的 Python 直译器。此项功能除了能够切换至您所熟悉的 Python 版本进行开发外,更可确保您的程序在不同 Python 版本下运行的函式相容性是合法的,如下图代码当中的 print 函式,在 Python 2.7 环境下为合法的 (红色箭头指向目前为使用 Python 2.7 全域环境直译器)。

接着我们示范切换至不同版本的 Python 环境,这里以切换至 Python 3.5 为例。



整合 Python 虚拟开发环境 (Virtual Environment)
Visual Studio 提供完整的 Python 虚拟环境来为不同项目提供独立的 Python 执行环境,如此一来可避免多个项目间彼此共用一个全域环境使得有太多与该项目不相关的套件在环境中,增加开发环境的複杂度。或者您能够在不同环境中安装不同版本的套件,以便测试在不同的版本中所使用到套件的函式是否有不一样之处。
如下图,我们创建多个虚拟环境,用此来安装不同版本的套件以进行相容性测试,而创建出来的虚拟环境能于稍后提供给其他项目使用,减少安装及创建环境所花费冗馀的设定时间。


整合 Python 套件管理员 (Package Manager)
在 Python 中有许多有用的第三方套件能够透过 pip 或者 easy_install 套件管理员安装,让您能在代码中呼叫这些套件中的函式,协助您更快的达成开发目标。而在 Visual Studio 中高度整合这些套件管理员,让您不需要输入繁琐的指令即可简单的安装套件。
如下图,可于方案总管内在欲安装套件的 Python 环境下点击滑鼠右键,即可看到安装 Python 套件的选项。


IntelliSense 对 Python 完整的支持
Visual Studio 针对 Python 亦提供以往在 C#、VB、VC++ 等语言上 IntelliSense 的支持,例如:列出物件成员、函式呼叫参数与返回值资讯、快速谘询和自动完成文字等辅助功能,让您在撰写物件或者呼叫函式时能够更有信心,提高撰写效率。
下图展示 IntelliSense 功能协助列出物件中所公开的成员内容。



对 Python 使用侦错模式 (Debugging)
Visual Studio 针对 Python 支持完整侦错功能,例如在程序执行时能够暂止于中断点处,此时能检视或修改当下执行情况的区域变数以及呼叫堆叠,并能于侦错模式下使用您熟悉的重要功能让您能更简易快速的掌握程序执行的情况。

相同的,您也能够于混合侦错模式下自由的跳跃至不同代码的呼叫堆叠当中进行代码及变数的巡览。

版本控制
Visual Studio 整合版本控制,其支持 Git 与 Visual Studio Team Services 版本控制,透过 Visual Studio 您现在不需要额外工具就能够直接于 Visual Studio 内对您的 Python 项目直接进行版本提交、复原、比较、检视代码历史纪录等版本控制所用到的常用功能。


跨平台远端侦错 (Remote Debugging)
Visual Studio 替 Python 程序加入了远端除错的能力,透过这个 Python 套件让您能够使用 Visual Studio 连接在不同的作业系统上 (如 Linux) 执行的 Python 程序。此项功能使得您在跨平台开发时更能够获得一致的开发体验与提升整体开发效率!
如下图展示 Python 程序运作在一块 Linux 嵌入式开发板上,同时在个人电脑内的 Windows 10 运行着Visual Studio 2015,其透过 ptvsd 套件能让您远端附加至序,直接对 Linux 嵌入式开发板上运行的 Python 程序进行如您所熟悉的侦错模式。并保有完整的侦错模式功能像是区域变数检视、呼叫堆叠分析等完整侦错功能来进行程序的分析与追踪。

