Nov 7

一、Python 的安装

众所周知,目前 Python 有两个分支,也即 Python2 与 Python3。尽管从版本号上看,后者是前者的更新版本,但可惜的是 Python3 不完全兼容 Python2。这就导致了众多使用 Python 的 Linux 系统中需要安装两套 Python 工具。在 MS Windows 中存在同样的问题,不过由于 MS Windows 系统本身不依赖于 Python,因此,安装哪个版本的 Python 取决于使用的 Python 应用程序的依赖关系了。如果作为全新的 Python 开发环境,安装哪个版本的 Python 都无所谓。

安装 Python2 与 Python3 的方法几乎是一样的。例如,要安装 Python2(当前版本是 2.7.10),先到它的官方网站 http://www.python.org 下载安装包

> wget --no-check-certificate https://www.python.org/ftp/python/2.7.10/python-2.7.10.amd64.msi

然后将它安装到 C:\Python27 目录。再如安装 Python3(当前版本是 3.5.0)完全类似,先到它的官方网站 http://www.python.org 下载安装包

> wget --no-check-certificate https://www.python.org/ftp/python/3.5.0/python-3.5.0.amd64.msi

然后将它安装到 C:\Python35 目录。请注意,为了防止 MS Windows 升级过程中影响 Python 的使用,一般不建议将 Python 安装到 MS Windows 系统的应用程序文件目录 %PROGRAMFILES% 中。这就是为什么将 Python 安装到磁盘根目录的原因。

Python 安装完毕之后,需要它们的可执行目录添加到 MS Windows 的 PATH 环境变量中。例如

> setx PATH "%PATH%;C:\Python27;C:\Python27\Scripts"

其中 C:\Python27 里存放的是 Python 解释器;而 C:\Python27\Scripts 则提供了很多工具。现在打开 CMD.EXE 窗口,试试下述命令查看 Python 版本以确认否正常工作

> python.exe -V

一切正常的话,可以进入 Python 解释器了

> python.exe
>>> 

其中 >>> 是 Python 解释器的提示符。里面可以运行 Python 命令,例如想获取 Python 模块 sys 的帮助,可执行

>>> help('sys')

一般而言,Python 内置模块的帮助文档的阅读器默认是 less,因此翻页、退出方法很简单,只需操作键盘上的方向键与 q 即可。退出 Python 解释器的方法是

>>> exit()

实际上,Python 的帮助文档也可直接在命令行或者 Web 界面中调用 pydoc,例如在 CMD.EXE 窗口中执行

> pydoc sys

若不知晓模块名,可按下述方式搜索关键字

> pydoc -k sys

或者启动用小型 Web 服务器,也即在 CMD.EXE 窗口中执行

> pydoc -p 8000

打开网页浏览器,访问 http://localhost:8000 即可查看文档。甚至可到 Python 的官方网页下载帮助文档 http://docs.python.org/download.html。另外,Python 命令也可以写到文件中,这样的文件称为 Python 脚本,一般以 .py 为扩展名。通常,在 Linux 系统中编写 Python 脚本,脚本文件的第一行比较特殊,例如

#!/bin/python

该行被称为 Shebang,它的作用是告诉 Linux 系统执行 Python 脚本所调用的 Python 解释器的版本。不过在 MS Windows 中,Shebang 是没有用处的。例如编写如下的 Python 脚本 test.py:

> notepad test.py
print "Hello, Python World!"

保存后,运行它的方法是

> test.py

会根据环境变量 PATH 调用默认的 Python 解释器。当然也可指定 Python 解释器执行 Python 脚本

> C:\Python35\python.exe test.py

类似,可指定 Python 解释器执行 Python 模块,例如用 Python3 调用模块 pdb 调试 Python 脚本

> C:\Python35\python.exe -m pdb test.py

再如用 Python3 启动小型 Web 服务器

> C:\Python35\python.exe -m SimpleHTTPServer

可在本地网页浏览器中输入 http://127.0.0.1:8000 访问该 Web 服务。

以上介绍的是 Python 官方提供的安装套件。由于 Python 的使用场景众多、应用范围广泛,因此出现了很多非官方的 Python 定制套件。其中比较出名的有 Anaconda(https://www.continuum.io)、Enthought Canopy(https://www.enthought.com) 与 PythonXY(http://sourceforge.net/projects/python-xy),它们在科学计算领域中很有市场。这些 Python 工具的安装方法一如前述官方的 Python 安装方法,当然,这么多 Python 套件也为用户维护、切换它们带来烦恼。鉴于这样的原因,在 Linux 服务器系统或者 Mac OS X 中率先开发了 pyenv 工具来管理这些 Python 套件。作为 MS Windows 用户也不必担心,pywin 提供了类似 pyenv 的管理功能,可惜功能上没那么强大。

二、Python 模块/包管理工具的安装与使用

熟悉开源工具的朋友都知道,很多大型开源开发工具都有相应的开发包集散地与管理工具,例如 TeX 有 tlmgr(http://www.ctan.org,也即 CTAN)、Perl 有 cpan(http://www. cpan.org,也即 CPAN),Ruby 有 gem(http://rubygems.org),PHP 有 pear(http://pear.php.net)。幸运地是,Python 也拥有 pip(http://pypi.python.org,也即 PyPI)。Python 提供了两组工具使用 PyPI,也即 easy_install 与 pip,推荐使用 pip。不过,某些时候,easy_install 还是很有用的,这里也介绍了一下它的用法。另外,最新的 Python 版本一般都自带这两个工具,但是考虑到这两个工具的重要性,还是稍微了解一下这两个工具的安装方法。

1、easy_install 的安装与使用

easy_install 是由 PEAK(Python Enterprise Application Kit) 开发的 setuptools 包里带的一个命令行,所以使用 easy_install 实际上是在调用 setuptools 来完成安装模块的工作。引导 setuptools 的 ez_setup 工具和随之而生的扩展后的 easy_install 与 PyPI(Python Package Index)一起工作来实现相同的功能。它可以很方便的让您自动下载、编译、安装和管理 Python 包。

setuptools 可以在 http://pypi.python.org/pypi/setuptools 页面上找到 MS Windows 的安装方式,现在官网建议使用的是下载 ez_setup.py 来安装。

> wget http://peak.telecommunity.com/dist/ez_setup.py

或者

> wget --no-check-certificate https://bootstrap.pypi.io/ez_setup.py

下载完 ez_setup.py,在 CMD.EXE 窗口中切换到下载目录,使用命令行:

> python.exe ez_setup.py 

该命令行会自动下载最新版本,之后会自动安装 setuptools。setuptools 安装完毕之后,在 C:\Python27\Scripts 下会有一个 easy_install.exe 可执行文件。有 setuptools 之后,剩下的就比较简单了。通常,easy_install 会将第三方 Python 模块安装到 C:\Python27\Lib\site-packages 目录中。

a、通过模块名称来安装。setuptools 会自动搜索 PyPI 以查找最新版本的模块。如果找到的话,它会自动下载、编译和安装。例如

> easy_install SQLObject
> easy_install "python_dateutil==1.5"
> easy_install "python_dateutil>=1.5"

通过 easy_install 安装 pip

> easy_install pip

b、指定查找页面来使用名称和版本信息来安装或升级一个模块:

> easy_install -f http://sqlobject.org/SQLObject
> easy_install -U SQLObject

c、从指定 PyPI下载镜像地址来下载模块源码并在下载成功之后编译安装

> easy_install -i http://e.pypi.python.org/simple pip

d、在 easy_install 编译及安装 Python 包的过程中,需要使用 C/C++ 编译工具。在 MS Windows 操作系统中,同样需要事先安装 Visual Studio 或者 MingGW 等编译软件。PyPI 还提供了已经编译好的二进制文件 egg 给用户直接使用。如果用户直接使用 egg 的话,就无需在操作系统中准备编译器了。egg 是以平台相关的形式发布的,多数面向 MS Windows 用户。在理想情况中,egg 是一个使用 zip 压缩的文件,其中包括了所有需要的包文件。但是在某些情况下,setuptools 会决定(或被开关告知)包不应该是 zip 压缩的。在这些情况下,egg 只是一个简单的未曾压缩的子目录,但是里面的内容是相同的。使用单一的版本可以方便地进行转换,并可以节省一点磁盘空间,但是 egg 目录从功能和组织结构上来说都是相同的。为第三方 Python 模块发布 egg 文件非常简单,只需要在 Python 源码包的 setup.py 所在目录中执行

> python setup.py bdist_egg

在本地已经存在的 egg 文件基础上来安装模块

> easy_install D:\Downloads\OtherPackage-3.2.1-py2.3.egg

e、如果 PyPI 中某个已安装模块有最新版本,可升级到最新版本:

> easy_install --upgrade PyProtocols

f、从源码中安装模块(源码已经下载并解压到当前文件夹下)

> easy_install .

g、手工删除 Python 模块

如果想删除通过 easy_install 安装的软件包,由于 easy_install 本身没有卸载功能,需要手动分步完成。比如说卸载 MySQL-python,首先,可以执行命令:

> easy_install -mxm MySQL-python

此操作会从 C:\Python27\Lib\site-packages\easy-install.pth 文件里把 MySQL-python 的相关信息抹去;接着可以手动删除 MySQL-python 的 egg 文件或 MySQL-python 文件夹;最后,查找 C:\Python27\Scripts\ 目录并删除相关的可执行文件。

一般的 Python 第三方模块或包删除方法就是到 Python 的第三方模块或包的存放位置进行手工删除文件和文件夹,然后删除 C:\Python27\Lib\site-packages\easy-install.pth 文件中的相应的行。卸载 .egg 的方法类似,只需到 C:\Python27\Lib\site-packages 目录删除相应的 egg 文件或目录,接着在从 C:\Python27\Lib\site-packages\easy-install.pth 中删除相应的行。

2、pip 的安装与使用

pip 是 easy_install 的替代,可在 https://pypi.python.org/pypi/pip 找到 pip 的详细信息。pip 的安装需要 setuptools 或者 distribute 模块。distribute 是 setuptools 的替代( setuptools 包后期不再维护了)。若使用的是 Python3,那么只能使用 distribute 来安装了,因为 Python3 不再支持 setuptools 了。

利用 Python 的 setup.py 安装 pip,它默认会使用 setuptools 构建并导入 Python 模块

> wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#md5=3823d2343d9f3aaab21cf9c917710196
> tar -zxf pip-7.1.2.tar.gz
> cd pip-7.1.2
> python setup.py install

利用 distribute_setup 安装 pip

> wget http://python-distribute.org/distribute_setup.py
> wget --no-check-certificate https://bootstrap.pypi.io/get-pip.py
> python distribute_setup.py
> python get-pip.py

安装完成之后,在 C:\Python27\Scripts 下会有一个 pip.exe 可执行文件。有了 pip,Python 模块的安装就非常简单了。通常,pip 也会将第三方 Python 模块安装到 C:\Python27\Lib\site-packages 目录中,除非指定 --user 选项。关于该选项的介绍,请参看 https://docs.python.org/2/install/index.html#inst-alt-install-user。请注意,将 %APPDATA%\Python\Scripts 加入环境变量 PATH,也即

> setx PATH "%PATH%;%APPDATA%\Python\Scripts"

a、在 PyPi 中搜索并安装 Python 模块

> pip search "SomePackage"
> pip install SomePackage
在 pip 编译及安装 Python 包的过程中,同样可能需要使用 C/C++ 编译工具;对于不同版本的包,pip 可以指定包的版本,例如
> pip install SomePackage==version
甚至安装开发版本,例如
> pip install --pre SomePackage

b、pip 可以从指定的文件中读取需要安装的 Python 模块名

> echo Django > requirements.txt
> pip install -r requirements.txt

c、还可为 pip 指定 Python 模块的源码包路径,包括源代码包的本地路径或者网络链接:

> pip install D:\Downloads\SomePackage-1.0.4.tar.gz
> pip install http://my.package.repo/SomePackage-1.0.4.zip
> pip install http://sourceforge.net/projects/pychecker/files/pychecker/0.8.19/pychecker-0.8.19.tar.gz/download 

当然,这些包能够安装的前提是包内都已经写好了 setup.py。

d、可用下述命令查看本地所安装的 Python 模块的文件列表

> pip show --files SomePackage

另外,可通过下述方法列出所有通过 pip 安装的第三方 Python 模块

> pip list

还可以按需求将由 pip 所安装的第三方 Python 模块输出为 pip 命令能辨认的格式供 pip 使用

> pip freeze

e、若 PyPI 中有本地已安装 Python 模块的更新时,可利用下述命令更新它

> pip install --upgrade SomePackage
> pip install --upgrade SomePackage==version
> pip install --upgrade -r requirements.txt

可以利用下述方法列出所有的可更新的 Python 模块

> pip list --outdate

还可升级 pip 自身

> python -m pip install -U pip

f、pip 命令不建议使用 egg 文件。如果你想使用 egg 安装的话,请使用 easy_install 命令。不过 pip 支持 wheel 文件。wheel 本质上是一个 zip 包格式,它使用 .whl 扩展名,用于 python 模块的安装,它的出现是为了替代 Eggs。模块 wheel 还提供了一个 bdist_wheel 作为 setuptools 的扩展命令,它可以用来生成 wheel 包。为第三方 Python 模块发布 whell 文件非常简单,只需要在 Python 源码包的 setup.py 所在目录中执行

> python setup.py bdist_wheel

pip 也提供了一个 wheel 子命令来发布 wheel 包,当然,需要先安装 wheel 模块。同时,pip 可直接安装 wheel 文件,例如

> pip install beautifulsoup4-py2-none-any.whl
实际上,pip 总是优先使用 .whl 文件;若没有 .whl 文件才会从源代码利用 wheel 模块编译;当然,即使有 .whl 文件,也可以让 pip 只从源码编译,例如
> pip install --no-binary :all: beautifulsoup

g、pip 比 easy_install 强大的地方之一是提供了卸载本地安装的第三方 Python 模块,例如

> pip uninstall SomePackage
> pip uninstall -r requirements.txt

pip 还有许多有用的选项,如 --download-cache=DIR 可以指定下载安装文件时缓存至 DIR 路径,下次需要时则直接读取缓存文件;再如 -i 可用来指定 pip 的安装镜像。更多的选项信息可以执行

> pip --help
> pip help install

除了命令行选项之外,还可通过环境变量设置 pip 的行为,例如 PIP_LOG_FILE、PIP_DOWNLOAD_CACHE、PIP_CONFIG_FILE。随后,还可以通过修改 pip 的配置文件来实现上述需求。在 MS Windows 下,pip 配置文件是 %HOMEPATH%\.pip\pip.conf,若在其中增加下述内容

> notepad.exe %HOMEPATH%\.pip\pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

这样在使用 pip 来安装时,会默认使用此源。更多的配置请参考 http://pip.readthedocs.org/en/latest/user_guide.html#configuration。配置的优先级如下:

  • 命令行选项 --host=foo 覆盖 PIP_HOST=foo;
  • 环境变量 PIP_HOST=foo 覆盖 pip 配置文件中的 [global] 小节中的 host = foo;
  • pip 配置文件中的命令 command 小节 [<command>] 中的 host = bar 覆盖配置文件中的 [global] 小节中的相应的配置。

作为使用 pip 的实例,下面来介绍一下 MS Windows 系统中 Python 套件管理工具 pywin 的安装以及使用方法。安装 pywin 之前需要首先确保安装了一套 Python 工具包,它是 pywin 正常工作的保障。pywin 的安装非常简单

> pip install --user pywin

首先初始化 pywin 环境

> pyassoc

搜索所有已安装的 Python 并在 pywin.bat 所在目录中创建相关启动文件

> pywin genlaunchers

若要启动现有 PATH 中的第一个 Python 套件,可执行

> pywin

若想在当前 CMD.EXE 窗口中启用 python 2.7,可执行

> pywin -2.7

若想将 Python 3.3 设置为默认的 Python 套件,可执行

> pywin setdefault 3.3

三、python 虚拟环境的创建与使用

Python 虚拟环境为 Python 模块的开发、测试提供了极大的便利,它可以有效的隔离无关模块。下面来介绍两个建立 Python 虚拟环境的典型方法。

1、利用 virtualenv 模块

安装 virtualenv:

> easy_install virtualenv==1.10.1

或者

> pip install virtualenv

安装完毕之后,同样在 C:\Python27\Scripts 下面可以看到 virtualenv.exe 文件。

安装完毕 virtualenv 之后,就可以创建虚拟环境了。先在 CMD.EXE 窗口中切换到需要创建虚拟环境的目录下,创建的虚拟环境是在该目录下的一个文件夹

> cd D:\some\directory\to\create\VirtualEnvs\
> virtualenv MyEnv

默认情况下,虚拟环境会依赖系统环境中的 site-packages,就是说系统中已经安装好的第三方 Python 包也会安装在虚拟环境 MyEnv 中。如果不想依赖这些 Python 包,那么可以加上参数 --system-site-packages 建立虚拟环境

> virtualenv --system-site-packages MyEnv

如果系统中安装有多个 Python 版本,要想使用指定版本的 Python 来创建虚拟环境,可执行

> virtualenv --python=C:\Python35\python.exe MyEnv

创建之后,可以检查一下 MyEnv 目录中是否有文件生成,同时确认一下 MyEnv\Scripts\ 目录中是否有 activate.bat 和 deactivate.bat 两个文件。至此,虚拟环境 MyEnv 就创建好了。运行虚拟环境只需要在 CMD.EXE 窗口中下执行

> cd D:\some\directory\to\create\VirtualEnvs\
> MyEnv\Scripts\activate.bat

虚拟环境 MyEnv 启动后,会在 CMD.EXE 窗口的提示符前多出一个 (MyEnv),在该 CMD.EXE 窗口中进行的所有操作均在虚拟环境 MyEnv 中,例如下述命令

(MyEnv)> pip install Pelican

会将 Python 模块 Pelican 安装到虚拟环境 MyEnv 所在目录 D:\some\directory\to\create\VirtualEnvs\MyEnv 中,而不是 Python 套件所在目录 C:\Python27 中。退出虚拟环境只需要在该 CMD.EXE 窗口中运行

(MyEnv)> deactivate.bat

简单说明一下与 virtualenv 相关的环境变量 VIRTUALENV_USE_ DISTRIBUTE。VIRTUALENV_USE_DISTRIBUTE 是向 Python 模块 distribute 指明 Python 运行信息的环境变量。如果在开发过程中,希望所开发的 Python 应用程序有“不兼容旧版本的 Python”或者“兼容最新版本 Python”的要求,最好对该环境变量进行设定。为了不在每次登录都输入这样的命令,可在 MS Windows 中设置环境变量,例如

> setx VIRTUALENV_USE_DISTRIBUTE=true

模块 distribute 会根据这个环境变量是否存在,判断虚拟运行环境的配置有效或无效。因此在不使用模块 distribute 的时候,建议取消该环境变量。

2、利用 virtualenvwrapper-win 模块

当然更好的虚拟环境封装是安装下述 Python 模块

> pip install virtualenvwrapper-win

并设置环境变量 WORKON_HOME 为虚拟环境的工作目录

> setx WORKON_HOME "%USERPROFILE%\Virtualenvs"

a、创建虚拟环境,例如下述命令行会创建一个名为 MyEnv 的虚拟环境

> mkvirtualenv MyEnv

使用指定版本的 Python 来创建虚拟环境,例如

> mkvirtualenv --python=C:\Python35\python.exe MyEnv

实际上,virtualenvwrapper 提供了更多的定制变量,例如 VIRTUALENVWRAPPER_PYTHON、VIRTUALENVWRAPPER_VIRTUALENV 以及 VIRTUALENVWRAPPER_VIRTUALENV_ARGS 等。

b、列出所有虚拟环境

> lsvirtualenv

切换到虚拟环境,例如

> workon MyEnv

此时在 CMD.EXE 窗口的提示符前多出一个 (MyEnv)。此时可进入虚拟环境的所在目录,例如

(MyEnv)> cdvirtualenv

根据环境变量 WORKON_HOME 的设定,会将目录切换到 %USERPROFILE%\Virtualenvs\MyEnv。

c、在虚拟环境中的创建工程,例如在 SomeEnv 虚拟环境中创建名为 ProInSomeEnv 的工程

(MyEnv)> mkproject ProInSomeEnv

进入虚拟环境中的工程目录,例如

(MyEnv)> cdproject ProInSomeEnv

退出当前虚拟环境

(MyEnv)> deactivate

d、移除虚拟环境,例如

> rmvirtualenv MyEnv

3、虚拟环境的迁移

当需要将虚拟环境 MyEnv 迁移或复制到另一个虚拟环境(可能不在同一台机器上)YourEnv 时,首先仍然需要在目的机器上安装 pip 和 virtualenv(或者 virtualenvwrapper-win),然后采用以下方法之一安装其他的 Python 模块。

a、直接将 MyEnv 里的文件全部复制到 YourEnv 里,然后修改涉及路径的文件。此种方法可能正常使用,但显然不是好办法。

b、进入原虚拟环境 MyEnv,然后执行

(MyEnv)> pip freeze > requirements.txt

将包依赖信息保存在 requirements.txt 文件中。然后进入目的虚拟环境 YourEnv,执行

(MyEnv)> pip install -r requirements.txt

pip 就会自动从网上下载并安装所有包。

c、pip 默认会从 PyPI 服务器(http://pypi.python.org/simple)下载包的安装文件,如果目的机器无法连外网,则可以采用以下办法:

c1、搭建自己的 PyPI 服务器。专业的,可以使用第三方的软件包来搭建一个完整的 PyPI 镜像服务器。更快速的方法只需要一条命令

> python -m SimpleHTTPServer

即可完成搭建服务器,具体的目录结构可参考原 PyPI 服务器,简而言之,就是把安装文件打包放入目录即可。搭建好服务器之后,在目的虚拟环境中,就可以使用 pip 来安装了,命令如:

(YourEnv)> pip install -i http://127.0.0.1:8000/ -r requirements.txt

c2、若不想搭建 PyPI 服务器,也有办法。首先将所有包的安装文件下载到本地目录中,可以手动下载,也可以使用 pip,例如

(MyEnv)> pip install -d D:\Downloads -r requirements.txt

然后将 D:\Downloads 中缓存的所有 Python 包以及 requirements.txt 文件复制到目标主机中,再在目的虚拟环境中使用 pip 安装,例如所有缓存的 Python 包也被复制到 D:\Downloads 中,则

(YourEnv)> pip install -d D:\Downloads -r requirements.txt

即可。

c3、还有一种途径,就是 pip 提供的 bundle 选项。首先执行

(MyEnv)> pip bundle MyEnv.pybundle -r requirements.txt

将生成一个 MyEnv.pybundle 文件,该文件夹包含所有包的安装文件(注意必须后缀名必须是 .pybundle),默认是重新从 PyPI 服务器下载安装文件的,如果愿意,也可以利用 c1 中的方法,指定本地的 PyPI 服务器。然后在目的虚拟环境中执行

(YourEnv)> pip install MyEnv.pybundle

即可。

四、图形用户界面相关的 Python 工具

GTK+ 是由 C 语言开发的跨平台图形用户界面库,PyGTK 是将 GTK+ 与 Python 语言绑定,它能够用 Python 语言进行图形用户界面的开发,它的项目主页是 http://www.pygtk.org。最新的 PyGTK 版本是 2.24.2,不过目前还不支持 Python3。PyGTK 有两种安装方式:一是安装将 GTK+、Python 等集成在一起的 PyGTK 包,可到 http://ftp.gnome.org/pub/GNOME/binaries/ 下载 32 位的安装包 pygtk-all-in-one-2.24.2.win32-py2.7.msi 或 64 位的安装包 pygtk-all-in-one-2.24.2.win64-py2.7.msi;二是分别单独安装 Python、GTK+ 与 PyGTK 工具包。为了行文统一,此地选择后者作为安装 PyGTK 的方法,Python 已由前述方案安装,请记住所安装的 Python 版本是 Python 2.7;可到 http://ftp.gnome.org/pub/gnome/binaries 下载最新版本 GTK+-2,也即 32 位安装包 gtk+-bundle_2.24.10-20120208_win32.zip 或者 64 位安装包 gtk+-bundle_2.24.10-20120208_win64.zip,若不需要用 C 语言开发 GTK+ 的话,也可只安装 GTK+ 的运行库,到 https://sourceforge.net/projects/gtk-win/files/GTK%2B%20Runtime%20Environment/GTK%2B%202.24 下载 gtk2-runtime-2.24.10-2012-10-10-ash.exe;至于 PyGTK,32 位的包可到 http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/ 下载 pygtk-2.24.0.win32-py2.7.msi,64 位的包可到 http://ftp.gnome.org/pub/GNOME/binaries/win64/pygtk/ 下载 pygtk-2.24.0.win64-py2.7.msi。由于未集成的 PyGTK 工具包还依赖 PyGObject、PyCairo,32 位对应的到 http://ftp.gnome.org/pub/GNOME/binaries/win32/ 下载最新版本 pygobject-2.28.3.win32-py2.7.msi、pycairo-1.8.10.win32-py2.7.msi,64 位对应的到 http://ftp.gnome.org/pub/GNOME/binaries/win64/ 下载最新版本 pygobject-2.28.3.win64-py2.7.msi、pycairo-1.8.10.win64-py2.7.msi。安装过程相对容易,就不多言了。还需测试一下 PyGTK 开发环境,下面是一个简单 Hello PyGTK 的例子
> notepad.exe hellopygtk.py
from gtk import * 

window = GtkWindow(WINDOW_TOPLEVEL) # 创建一个顶层窗口 
window.set_title("Hello, world!") 
window.connect("destroy", mainquit) # 将注销事件与mainquit处理连接 

window.show() # 显示主窗口 
mainloop() # 进入事件循环 
> python hellopygtk.py
 
QT 是由 C++ 语言开发的跨平台图形用户界面库,PyQT 是将 QT 与 Python 语言绑定,它也能够用 Python 语言进行图形用户界面的开发,项目主页在 https://www.riverbankcomputing.com/software/pyqt。PyQT 只提供了一种预编译二进制包安装方式,也即集成除 Python 本身之外所有工具包(如 QT 等)的安装包,最新版本是 PyQT5-5.5.1,可到 http://sourceforge.net/projects/pyqt/files/PyQt5/ 下载 32 位安装包 PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x86.exe 或 64 位安装包PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x64.exe。将 PyQT下载后安装即可,安装它前需配置好 Python 开发环境,需要注意的是该包需要的 Python 版本是 Python 3.4,若是其他 Python 版本,需自行编译 PyQT 源代码。测试一下 PyQT 开发环境,下面是一个简单 Hello PyQT 的例子
> notepad.exe hellopyqt.py
import sys
from PyQt5 import QtWidgets, QtCore
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(360, 360)
widget.setWindowTitle("Hello, PyQt5!")
widget.show()
sys.exit(app.exec_())
> python hellopyqt.py
 
wxWidgets 也是由 C++ 语言开发的跨平台图形用户界面库,wxPython 是将 wxWidgets 与 Python 语言绑定进行图形用户界面的开发,它的项目主页在 http://www.wxpython.org。wxPython 只提供了一种预编译二进制包安装方式,也即集成除 Python 本身之外所有工具包(如 wxWidgets 等)的安装包,最新版本是 wxPython 3.0,可到 http://www.wxpython.org/download.php 下载 32 位安装包 wxPython3.0-win32-3.0.2.0-py27.exe 或 64 位安装包 wxPython3.0-win64-3.0.2.0-py27.exe。安装 wxPython 前需配置好 Python 开发环境,下载的安装包对应的 Python 版本应该是 Python 2.7。测试一下 wxPython 开发环境,下面是一个简单 Hello wxPython 的例子
> notepad.exe hellowxpy.py
import sys, os
from wxPython.wx import *

class main_window(wxFrame):
      def __init__(self, parent, id, title):
         wxFrame.__init__(self, parent, -1, title, size = (200, 100),style=wxDEFAULT_FRAME_STYLE|wxNO_FULL_REPAINT_ON_RESIZE)
         self.control = wxTextCtrl(self, -1, style=wxTE_MULTILINE)
         self.Show(true)

class App(wxApp):
      def OnInit(self):
         frame = main_window(None, -1, "wxPython: (A Demonstration)")
         self.SetTopWindow(frame)
         return true

app = App()
app.MainLoop()
> python hellowxpy.py
 
五、各种科学计算相关的 Python 工具
 
iPython 是增强的交互环境,它支持变量自动补全、自动缩进、支持 Bash Shell 命令,内置了许多很有用的功能和函数。 它的项目主页是 http://ipython.org。由于 iPython 4.0 之后,iPython 将语言无关的部分从 iPython 分离出来成了 jupyter,例如它包含了 iPython.notebook 等。
> pip install ipython jupyter
 
Spyder 是 Python 集成开发环境。由于 spyder 依赖 pyQT,需先安装 pyQT 开发包并配置相关的环境变量才能使用 pip 安装 spyder:
> pip install spyder
如果先解决依赖比较麻烦,也可从它的主页 https://github.com/spyder-ide/spyder/releases 获取预编译二进制包。
 
NumPy 是 Python 的数学计算基础库,它包括了 N 维数组、线性代数计算、傅立叶变换、随机数等。它的项目主页是 http://numpy.org。由于 NumPy 几乎不存在外部依赖,可直接用 pip 安装
> pip install numpy
当然,如果有外部的 LAPACK、BLAS 等 C/C++ 库的话,会对于 NumPy 的安装更有帮助。
 
SciPy 是 Python 的数值计算库,它包括了线性代数、拟合与优化、插值、数值积分、稀疏矩阵、图像处理、统计等。它的项目主页是 http://scipy.org。由于 SciPy 依赖与外部的 LAPACK、BLAS、ATLAS 等 C/C++ 库以及 Numpy 包,若解决了这些依赖问题,可用 pip 安装
> pip install scipy
否则请从它的主页 http://sourceforge.net/projects/scipy/files/scipy/ 获取二进制包。
 
SymPy 是 Python 的符号运算库,它的项目主页是 http://sympy.org。由于 SymPy 不依赖非 Python 库,可直接用 pip 安装
> pip install sympy
 
matplotlib 是 Python 的绘图库,它可用来绘制二维图形和图表,它的项目主页是 http://matplotlib.org。由于 matplotlib 依赖众多外部库,不建议在 MS Windows 上用源码安装,不过好在 PYPI 提供了 wheel 包,可直接安装它
> pip install matplotlib
或从它的主页 http://sourceforge.net/projects/matplotlib/files 获取二进制包。
 
Pandas 是 Python 的数据分析库,它包括了数据导入、整理、处理、分析等功能,它的项目主页是 http://pandas.pydata.org。安装很容易:
> pip install pandas
 
Chaco 是 Python 用来处理交互式图表的,它的项目主页是 http://code.enthought.com/projects/chaco。直接用 pip 安装
> pip install chaco
 
OpenCV 是 Python 的计算机视觉库,它的项目主页是 http://opencv.org。由于依赖比较复杂,建议从项目主页上下载安装最新的预编译二进制包 opencv-3.1.0.exe。
 
Cython 是 Python 代码转 C 代码的转换器,它是编写高效运算扩展库的首选工具。项目主页在 http://www.cython.org。安装非常简单:
> pip install Cython
 
ipdb 是增强的 Python 调试器,也可通过 logging 模块提供的日志功能进行调试。用 pip 安装即可
> pip install ipdb logging
若不想因依赖外部包而不能成功安装上述 Python 包,而又比较简单地获得 MS Windows 上大部分常用的 Python 二进制包,可试试下述地址: http://www.lfd.uci.edu/~gohlke/pythonlibs

若对用 Python 处理计算流体的问题有兴趣,不妨仔细阅读 https://github.com/barbagroup/CFDPython 中的课程。