# Python (简体中文)

相关文章

- Python Package Guidelines
- mod_python
- Python VirtualEnv

翻译状态： 本文是英文页面 Python 的翻译，最后翻译时间：2013-12-18，点击这里可以查看翻译后英文页面的改动。

Python 是非常强大的动态语言，应用领域非常广，是 Tcl, Perl, Ruby, Scheme 或 Java 外的一个好选择。

## 安装

目前有2个版本的Python, Python 3 是默认的，Python 2 是较老版本。

### Python 3

Python 3 是语言的最新版本，而且不兼容 Python 2。语言. 语法基本上差不多，但是很多细节，尤其是一些内置对象，像字典和字符串，它们的工作方式已经改变了，一些不推荐使用的特性最终被移除了。同样，标准库也进行了整理。所有差别的列表，请访问 Python2orPython3 和 Dive into Python 3 的相关 章节。

要获得 Python 3，请从官方软件仓库中安装 软件包 python 。

要从源代码编译测试版，请访问 Python 下载。AUR 中同样包含 PKGBUILDS 。如果要安装 RC 版，请注意二进制文件默认安装到 `/usr/local/bin/python3.x`.

### Python 2

要获得 Python 2，请从官方软件仓库中安装 软件包 python2 。

Python 2 可以和 Python 3 同时运行，需要指定成python2才会运行此版本。

默认的`/usr/bin/python`是链接到 python 3 的，所以所有要求使用 python 2 的软件包应该用 `/usr/bin/python2` 替换 `/usr/bin/python`.

用文本编辑器打开程序或脚本，将第一行：

    #!/usr/bin/env python

或

    #!/usr/bin/python

中的 `python` 替换为 `python2`。

另一种强制使用 python2 而不修改脚本的方法是明确地使用 python2 调用它，即

    python2 myScript.py

最后，你可能无法控制脚本调用哪一个，但还有一种方法。它仅在脚本使用 `#!/usr/bin/env python` 时有效，在用 `#!/usr/bin/python` 时无效。这种手法依赖于 `env` 在 PATH 变量中搜索第一个对应的条目。 首先创建一个目录。

    $ mkdir ~/bin

然后添加一个名为 'python' 的链接指向 python2 以及一个名为 'python-config' 的链接指向 python2-config 。

    $ ln -s /usr/bin/python2 ~/bin/python
    $ ln -s /usr/bin/python2-config ~/bin/python-config

最后把新的目录添加到你的 PATH 变量的 最前面。

    $ export PATH=~/bin:$PATH

注意到这个修改不是永久的，仅在当前终端会话中有效。 要检查 `env` 使用的是哪个 python 解释器，使用以下命令：

    $ which python

另一个解决这个问题的方法是通过 Virtualenv 来伪造一个脚本的运行环境。这要求脚本通过 `#!/usr/bin/env python` 来执行。当激活了 Virtualenv 之后，Python执行程序会被PATH变量指向到 Virtualenv 中。因此如果 Virtualenv 是用 Python 2创建的，那么`python`就会指向到 Python 2 。首先我们需要安装 python2-virtualenv：

    # pacman -S python2-virtualenv

然后创建 Virtualenv 环境：

    $ virtualenv2 venv # 创建一个名为 venv 的目录，其中包含了 Virtualenv

激活这个Virtualenv，使`python`指向 Python 2 ：

    $ source venv/bin/activate

注意: 这个激活只对当前终端会话有效。

之后的脚本就会用 Python 2 来启动。

## 正确设置编译脚本中的 Python 版本

许多项目的编译脚本认为 `python` 是 Python 2，如果这样编译会导致错误 - 例如 `print 'foo'` 是错误语法。幸运的是，很多编译脚本会使用 `$PATH` 中的`python` 而不是写死 `#!/usr/bin/python`，而且 Python 脚本都位于项目树中。所以，可以不修改脚本就解决此问题，只需创建`/usr/local/bin/python`：

    /usr/local/bin/python

    #!/bin/bash
    script=`readlink -f -- "$1"`
    case "$script" in
    /path/to/project1/*|/path/to/project2/*|/path/to/project3*)
        exec python2 "$@"
        ;;
    esac

    exec python3 "$@"

其中 `/path/to/project1/*|/path/to/project2/*|/path/to/project3*` 是用`|` 分隔的项目匹配列表。

给脚本执行权限：

    # chmod +x /usr/local/bin/python

完成后，指定的项目就会以 Python 2 运行脚本了。

## 集成开发环境

官方软件仓库中有一些 Python 集成开发环境。

### Eclipse

Eclipse 通过PyDev扩展同时支持 Python 2.x 和 3.x 系列。

### Eric

兼容 Python 3 的最新版：安装 软件包 eric。

兼容 Python 2 的 Eric 4：安装 软件包 eric4。

它们也能处理 Ruby。

### IEP

IEP是一个交互式（比如 MATLAB）的 python 集成开发环境（IDE），它包含了基本的调试功能以及一些科学计算库。它由iep提供。

### Ninja

Ninja IDE 的软件包为 ninja-ide.

### Spyder

Spyder (以前叫 Pydee) 是一个强大的 python 交互开发环境，具有高级编辑、交互测试、调试和检查功能。专注于科学计算，提供了与 matlab 相似的环境。可以通过软件包 spyder 进行安装。

## 获取 easy_install

easy_install 工具位于软件包 python-setuptools或python2-setuptools。

## 在 Python Shell 中实现自动补全功能

把下面的内容复制到 Python Shell 中

    /usr/bin/python

    import rlcompleter
    import readline
    readline.parse_and_bind("tab: complete")

Source

## 部件绑定

有如下部件工具的绑定:

- TkInter — Tk 绑定

  http://wiki.python.org/moin/TkInter || 标准模块

- pyQt — Qt 绑定

  http://www.riverbankcomputing.co.uk/software/pyqt/intro || pyqt

- pySide — Qt bindings

  http://www.pyside.org/ || python2-pyside

- pyGTK — GTK+ 绑定

  http://www.pygtk.org/ || pygtk

- PyGObject — GTK+ 2/3 绑定通过 GObject Introspection

  https://wiki.gnome.org/PyGObject/ || python2-gobject2 python2-gobject python-gobject2 python-gobject

- wxPython — wxWidgets 绑定

  http://wxpython.org/ || wxpython

要和 Python 一同使用，需要先安装相应的组件。

## 旧版本

AUR中有之前发布的 Python 版本，运行旧程序或测试程序的版本兼容性时可以使用：

- python15: Python 1.5.2
- python16: Python 1.6.1
- python24: Python 2.4.6
- python25: Python 2.5.6
- python26: Python 2.6.8
- python30: Python 3.0.1
- python31: Python 3.1.5
- python32: Python 3.2.3

2012年12月，Python 上游仅支持 Python 2.6, 2.7, 3.1, 3.2, 和 3.3 的安全修复，老版本有安全隐患，不建议使用。AUR 中还有老版本使用的模块和库，可以通过带版本的 python 搜索。例如 "python26" 关键字可以搜索支持 2.6 的模块。

## 更多资源

- Learning Python is one of the most comprehensive, up to date, and well-written books on Python available today.
- Dive Into Python 是极好的（免费）资源，但是可能更适合高级读者，且已经升级为 Python 3。
- A Byte of Python 适合新接触Python（以及编写脚本）的读者阅读。
- Learn Python The Hard Way 最好的编程入门书。
- facts.learnpython.org 学习 python 的好网站。
- Crash into Python 也被称为3小时认识 Python，向其它编程语言的程序员介绍 Python。
- Beginning Game Development with Python and Pygame: From Novice to Professional 是游戏方面的书籍。

## For Fun

从 Python 的交互 shell 运行：

    >>> import this

    >>> from __future__ import braces

    >>> import antigravity

Category:

- Programming language (简体中文)