文本编辑器

任何可以做纯文本编辑的工具都可以用来写Python代码,但是用功能更加强大的文本编辑器可以使你的编程工作更加轻松。

Vim

Vim 是一个用键盘快捷键代替菜单和图标来操作的文本编辑器。对于 Vim 编辑器,有几个插件和设置可以用来辅助 Python 开发。如果你只用 Python 开发,一个好的开始就是把缩进和换行的默认设置设置成兼容 PEP 8 的值。 在你的主目录里,打开一个叫作 .vimrc 的文件并且把下面这些代码添加进去:

1
2
3
4
5
6
7
set textwidth=79  " 行宽超过 79 会被截断
set shiftwidth=4 " 操作符 >> 缩进 4 列;<< 减少缩进 4
set tabstop=4 " 一个 TAB 显示为 4 列
set expandtab " 用空格代替 TAB
set softtabstop=4 " 敲击 TAB/BACKSPACE 插入 / 删除 4 个空格
set shiftround " 缩进为 'shiftwidth' 的倍数
set autoindent " 新行缩进与上一行对齐

使用这些设置,行宽超过 79 个字符会自动换行,并且缩进设置为用 4 个空格代替一个制表符。如果你还用 Vim 写其它的语言,有一个很方便的插件 indent ,用来处理 Python 源文件的缩进设置。

还有一个很方便的语法插件 syntax,对 Vim 6.1 里自带的语法文件做了一些增强。

这些插件为你用 Python 开发提供了一个基本环境。你应该充分利用 Vim 去持续检查你的代码是否有语法错误并且是否符合 PEP8 规范。幸运的是有 pycodestylePyflakes 来帮你做这些事。如果你的 Vim 编译时附带了 +python ,你也可以使用一些自带的插件非常方便的来做这些检查。

对于 PEP8 和 Pyflakes ,你可以安装 vim-flake8。然后你就可以在 Vim 里把 Flake8 功能映射到任何快捷键或操作上了。这个插件会在屏幕下方显示错误信息,并且提供一个简单的方式来跳转到对应的行。设置成每当你保存文件的时候就调用这个功能会很方便。如果想这样做,添加这行代码到你的 .vimrc

1
autocmd BufWritePost *.py call Flake8()

如果你已经使用了 syntastic ,你可以把它设置成在写入的时候自动运行 Pyflakes 并且在 quickfix 窗口里显示错误和警告信息。下面是一个在状态栏里显示检查状态和警告信息的示例配置:

1
2
3
4
5
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_auto_loc_list=1
let g:syntastic_loc_list_height=5

Python-mode

Python-mode 是 Vim 编辑器中一个复杂的编写 Python 代码的解决方案。有以下功能:

  • 让任意的 Python 代码检查工具(pylint, pyflakes, pycodestyle, mccabe) 都能协同工作
  • 使用 Rope 进行代码重构以及自动填写
  • 快速折叠 Python 代码
  • 虚拟环境支持
  • 全文搜索 Python 文档,运行 Python代码
  • 自动使用 pycodestyle 修正错误

等等。

SuperTab

SuperTab 是一个小型的 Vim 插件,可以用 <Tab> 键或者其他的自定义键来方便的完成代码自动填写。

Emacs

Emacs 是另一个强大的文本编辑器。它是完全可编程的(lisp),但学习曲线有点陡。 如果您已经是一名 Emacs 的用户了,推荐阅读 EmacsWiki 上的 Python Programming in Emacs

  1. Emacs 本身支持Python模式。

TextMate

TextMate 是一个带有苹果操作系统气质的文本编辑器。 巧取了 UNIX 和 GUI 的各自优点,TextMate 将两者中最好的部分带给了脚本专家和新手用户。

Sublime Text

Sublime Text 是一个设计精良的编辑器,你可以用来编写脚本代码、标记代码和一般的文字编辑。您将会爱上其漂亮的用户界面、非凡的特性和惊人的运行速度。

Sublime Text has excellent support for editing Python code and uses Python for its plugin API. It also has a diverse variety of plugins, some of which allow for in-editor PEP8 checking and code “linting”.

Sublime Text 对 Python 代码提供了非常棒的支持,而且其插件系统的 API 也是有 Python 语言编写的。它拥有大量各式各样的插件, 其中一些 允许编辑器内的 PEP8 检查和代码错误提示。

Atom

Atom 是一款 21 世纪的可定制性极高的文本编辑器。构建于atom-shell上,它拥有我们所喜欢的编辑器的所有优秀特性。

Atom 是 Web 原生的(HTML、CSS、JS),编辑器核心专注于模块化的设计和插件开发的便捷性。它自带本地包管理和大量的扩展包。Atom 下从事 Python 开发所推荐的插件是 Linterlinter-flake8 的组合。

IDEs

PyCharm / IntelliJ IDEA

PyCharm 由 JetBrains 公司开发,此公司还以 IntelliJ IDEA 闻名。它们都共享着相同的基础代码,PyCharm 中大多数特性能通过免费的 Python 插件带入到 IntelliJ 中。PyCharm 由两个版本:专业版(Professional Edition)(30天试用)和拥有功能相对较少的社区版(Community Edition)(Apache 2.0 License)。

使用 Visual Studio Code 来编辑 Python

Python for Visual Studio 是一款基于 Visual Studio Code IDE 的扩展。 它是一个免费的、轻量的、开源的 IDE,支持 Mac、Windows 和 Linux 等主流平台。它以诸如 Node.js 和 Python 等开源技术构建,具有如智能自动补全、本地和远程调试、linting(代码检查)等 引人注目的特性。

MIT licensed.

Enthought Canopy

Enthought Canopy 是一款专门面向科学家 和工程师的 Python IDE,它预装了为数据分析而用的库。

Eclipse

Eclipse 中进行 Python 开发最流行的插件是 Aptana 的 PyDev

Komodo IDE

Komodo IDE 由 ActiveState 开发,并且是能运行在 Windows、Mac 和 Linux 平台上的商业 IDE。KomodoEdit 是其开源版本。

Spyder

Spyder 是一款专门面向 Python科学库(即 Scipy)的 IDE。它集成了 pyflakespylintrope

Spyder 是免费开源的,功能包括代码补全、语法高亮、类和函数浏览器,以及对象检查等。

WingIDE

WingIDE 是一个专门面向 Python 的 IDE。它能运行在 Linux、Windows 和 Mac 上(作为一款 X11 应用程序,某些 Mac 用户可能会无法使用)。

WingIDE 提供了代码补全、语法高亮、源代码浏览器、图形化调试器的功能,还支持版本控制系统。

NINJA-IDE

NINJA-IDE 的名称来自递归缩写:”Ninja-IDE Is Not Just Another IDE”, 是一款跨平台的IDE,专为构建 Python 应用而打造,并能运行于 Linux/X11、Mac OS X 和 Windows 桌面操作系统上。从网上可以下载到这些平台的安装包。

NINJA-IDE 是一款开源软件(GPLv3许可),是使用 Python 和 Qt 开发。在 GitHub 能下载到源文件。

Eric (The Eric Python IDE)

Eric 是一款功能齐全的Python IDE, 提供源代码自动补全、语法高亮、对版本控制系统的支持、对Python 3 的支持、集成的 Web 浏览器、 Python Shell、集成调试器和灵活的插件系统等功能。它基于 Qt GUI 工具集,使用 Python 编写, 集成了 Scintilla 编辑器控制。Eric 是一款超过 10 年仍活跃开发的开源软件(GPLv3许可)。

解释器工具

虚拟环境

虚拟环境完整隔离项目包依赖,这意味着您无须全局(系统范围内)安装 Python 工程特定的包, 因此就能避免潜在的版本冲突。

使用时请参阅 Virtual Environments 文档。

pyenv

pyenv 是一个允许多个 Python 解释器版本同时安装于一台机器的工具。这解决了不同的项目需要不同版本的 Python 的问题。比如,为了兼容性, 可以很容易地为一个项目安装 Python 2.7,而继续使用 Python 3.4 作为默认的解释器。 pyenv 不止限于 CPython 版本——它还能安装 PyPy、anaconda、miniconda、stackless、jython 和 ironpython 解释器。

pyenv 的工作原理是在一个叫做 shims 目录中创建 Python 解释器(以及其他工具像 pip2to3 等)的伪造应用。当系统寻找名为 python 的应用时,它会先在 shims 目录中寻找并使用对应假版本的应用,然后会传递命令到 pyenv 中。 pyenv 再根据环境变量、.python-version 文件和全局默认设置的信息来判断该运行哪个版本的 Python。

pyenv 不是管理虚拟环境的工具,但是有一个叫做 pyenv-virtualenv 的插件可以自动化不同环境的创建,而且也能够直接集成到现有的 pyenv 工具中,基于环境变量或者 .python-version 文件,来切换不同的环境。

其他工具

IDLE

IDLE 是一个集成的开发环境,它是 Python 标准库的一部分。 它完全由 Python 编写,并使用 Tkinter GUI 工具集。尽管 IDLE 不适用于作为成熟的 Python 开发工具,很多时候我们用来尝试运行简单的 Python 代码片段,或者对 Python 不同特性做一些小实验。

它提供以下特性:

  • Python Shell 窗口(解释器)
  • 多窗口文本编辑器,支持 Python 代码高亮
  • 最小的调试工具

IPython

IPython 提供一个丰富的工具集来帮助您最大限度地和 Python 交互。 它主要的组件有:

  • 强大的 Python shell(基于终端和 Qt )。
  • 一个基于网络的笔记本,拥有相同的核心特性,但是支持富媒体、文本、代码、数学表达式和内联绘图。
  • 支持交互式的数据可视化和 GUI 工具集的使用。
  • 灵活、嵌入的解释器载入到您的工程工程中。
  • 支持高级可交互的并行计算的工具。
1
$ pip install ipython

使用以下命令下载和安装带有所有可选依赖(notebook、qtconsol、tests 和其他功能)的 IPython:

1
$ pip install ipython[all]

BPython

bpython 在类 Unix 操作系统中可替代 Python 解释器的接口。 它有以下特性:

  • 内建的语法高亮。
  • 行内输入时的自动补全建议。
  • Python 函数预期选项提供。
  • “倒带” 功能 —— 从内存中 pop 出代码的最后一行并重新运行。
  • 将输入的代码发送到 pastebin。
  • 将输入的代码保存到一个文件中。
  • 自动缩进。
  • 支持 Python 3。
1
$ pip install bpython

ptpython

ptpython 是一个构建在 prompt_toolkit 库之上的 REPL。它被视作是 BPython 的替代。特性包括:

  • 语法高亮
  • 自动补全
  • 多行编辑
  • Emacs 和 VIM 模式
  • 代码中嵌入的 REPL
  • 语法合法性检测
  • 支持 Tab 页
  • 通过 pip install ipython 安装后运行 ptipython,即可支持集成 IPython 的 shell:
1
$ pip install ptpython

参考资料