Python 3 文档(简体中文) 3.2.2 documentation

Version: 3.2.2

3. 在 Windows 上使用 Python

这份文档旨在给出一份 Python 在 Windows 特定的行为的概要, 这些是你在 Microsoft Windows 上使用 Python 应该知道的.

3.1. 安装 Python

不像大多 Unix 系统和服务, Windows 不原生的需求 Python, 因此不会预先安装 Python 的一个版本. 然而, 多年以来, CPython 团队为每个`发行版 <http://www.python.org/download/releases/>`_ 编译了 Windows 安装程序 (MSI 包).

Check PEP 11 for details on all unsupported platforms. 随着 Python 持续地开发, 有些平台曾被支持但现在不在被支持 (因为缺少用户或开发者). 检查 PEP 11 获得所有不被支持平台的细节.

  • 直到 2.5, Python 还可以兼容 Windows 95, 98 和 ME (但在安装时会抛出一个警告). 在 Python 2.6 (以及所有随后版本)里, 放弃了对它们的支持, 新版本只被预期在 Windows NT 家族里工作.
  • Windows CE 依旧被支持.
  • Cygwin 安装程序同样提供 Python 解释器; 它位于 “Interpreters” 下. (cf. Cygwin 包源, Maintainer releases)

参阅 Python for Windows (和 DOS) 获取有关预编译安装包的细节信息.

See also

Python on XP
“7 Minutes to “Hello World!”” by Richard Dooling, 2006
Installing on Windows
in “Dive into Python: Python from novice to pro” by Mark Pilgrim, 2004, ISBN 1-59059-356-1
For Windows users
in “Installing Python” in “A Byte of Python” by Swaroop C H, 2003

3.2. 替代软件集

除了标准 CPython 发行版, 还有包含附加功能的修改包. 以下是一些流行的版本以及它们的关键特性:

ActivePython
兼容多平台的安装包, 文档, PyWin32
Enthought Python Distribution
带有各自文档的流行模块 (如 PyWin32), 建造可扩展 Python 应用的工具包

注意, 这些包有可能安装 Python 的*老*版本.

3.3. 配置 Python

为了完美的运行 Python, 你可能要修改 Windows 当前的环境设置.

3.3.1. 附录: 设置环境变量

Windows 有一个内建的对话框来更改环境变量 (下面教程使用与 XP 经典视图): 右击你的机器图标 (在桌面电脑上通常叫 “我的电脑), 选择:menuselection:属性. 然后打开 :guilaber:`高级` 选项卡, 点击 :guilaber:`环境变量` 按钮.

简单地说, 过程为:

我的电脑 ‣ 属性 ‣ 高级 ‣ 环境变量

在这个对话框里, 你可以添加或更改用户和系统变量. 要改变系统变量, 你需要有机器的非限制性权限 (如 Administrator 权限).

另一个添加环境变量的方法是使用 set 命令:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

要使这个设定永久生效, 你可以把相应的命令行添加到你的 autoexec.bat 文件. msconfig 是这个文件的一个图形接口.

Viewing environment variables can also be done more straight-forward: The command prompt will expand strings wrapped into percent signs automatically 查看环境变量可以更为直接地做到: 命令提示会自动的扩展以百分号包围的字符串:

echo %PATH%

查询 set /? 获得它行为的更多细节.

See also

http://support.microsoft.com/kb/100843
Environment variables in Windows NT
http://support.microsoft.com/kb/310519
How To Manage Environment Variables in Windows XP
http://www.chem.gla.ac.uk/~louis/software/faq/q1.html
Setting Environment variables, Louis J. Farrugia

3.3.2. 找到可执行的 Python

除了使用开始菜单里自动创建的图标进入 Python 解释器, 你可能还要从 DOS 命令下打开 Python. 要使得这个工作, 你需要设置你的 %PATH% 环境变量包含 Python 的目录, 通过分号分隔其它条目. 一个参考的变量如下所示 (假设最初两个记录是 Windows 默认的):

C:\WINDOWS\system32;C:\WINDOWS;C:\Python25

现在在命令行下键入 python 将会打开 Python 解释器. 因此, 你也可以使用命令行选项来执行你的脚本, 参阅 Command line.

3.3.3. 找到模块

Python 通常把它的库放在安装目录下 (因此你的 site-packages 文件夹也在那里). 因此, 如果你把 Python 安装在 C:\Python\ 下, 默认库就放在 C:\Python\Lib\ 下, 而第三方模块应该放在 C:\Python\Lib\site-packages\.

这是 Windows 上 sys.path 的构成:

  • 一个空的记录添加在开始的位置, 它对应于当前目录.
  • 如果存在环境变量 PYTHONPATH, 如 Environment variables 所描述的, 它的条目会在接下来的地方添加. 注意在 Windows 上, 这个变量上的路径必须有分号来分隔, 以区别在盘符 (C:\ 等) 中使用的冒号.
  • 附加的 “应用路径” 可以作为 HKEY_CURRENT_USERHKEY_LOCAL_MACHINE 下的 \SOFTWARE\Python\PythonCore\version\PythonPath 的子键添加到注册表里. 用分开分隔的字符串作为默认值的子键会把每一个路径添加到 sys.path. (注意, 所有已知的安装包只使用 HKLM, 因此一般 HKCU 是空的.)
  • 如果设置了环境变量 PYTHONHOME, 那么它就被认为是 “Python Home”. 否则, 主 Python 可执行文件的路径被用于定位一个 “地标文件” (Lib\os.py) 来推测 “Python Home”. 如果找到了一个 Python home, 被添加到 sys.path 的字目录 (Lib, plat-win 等) 就基于那个文件夹. 否则, 核心 Python 路径就通过注册表里的 PythonPath 来构建.
  • 如果无法定位 Python Home, 环境里没有指定 PYTHONPATH, 没有注册表记录被找到, 那么就使用一个默认的相对路径 (例如, .\Lib;.\plat-win 等).

这一切的结果如下:

  • 当在 Python 主目录 (即可以是安装的版本, 也可以直接是 PCBuild 目录) 下运行 python.exe, 或任意其它 .exe 文件, 核心路径就被推断出来了, 而注册表里的核心路径就被忽略. 注册表里的其它 “应用路径” 一直被读取.
  • 当 Python 寄宿在另一个 .exe 里 (不同的目录, 通过 COM 嵌入等), “Python Home” 不会被推断出, 因此使用注册表里的核心路径. 注册表里的其它 “应用路径” 一直被读取.
  • 如果 Python 无法找到它的 home, 也没有注册表 (如, 冻结的 .exe, 一些非常大的安装包) 你会得到一个默认但是相对的路径.

3.3.4. 可执行脚本

Python 脚本 (后缀为 .py 的文件) 默认下被 python.exe 执行. 这个可执行文件会打开一个终端, 即使程序使用 GUI 时终端也会被打开. 如果你不想让它发生, 那么使用后缀 .pyw, 这样脚本就默认由 pythonw.exe 执行 (这两个可执行文件都位于安装 Python 的顶级目录下). 这样会在启动时阻止终端窗口的弹出.

你可能想让 .py 脚本也由 pythonw.exe 执行, 可以在 usual facilities 里设置它, 例如 (可能需要管理员权限):

  1. 打开一个命令行.

  2. 关联 .py 脚本到正确的文件组:

    assoc .py=Python.File
    
  3. 重定向所有 Python 文件到新的可执行文件上:

    ftype Python.File=C:\Path\to\pythonw.exe "%1" %*
    

3.4. 附加模块

尽管 Python 旨在所有平台上的可移植性, 但在 Windows 上还有一些独有的特性. 存在几个模块, 有标准库里的也有外部的, 和代码片段使用这些特性.

Windows 独有的标准模块的文档在 MS Windows Specific Services.

3.4.1. PyWin32

Mark Hammond 的 PyWin32 模块是高级 Windows 独有支持的模块的一个集. 包含的工具有:

PythonWin 是一个使用 PyWin32 装载的简单 MFC 应用. 它是一个可嵌入的 IDE, 内建有一个调试器.

See also

Win32 How Do I...?
by Tim Golden
Python and COM
by David and Paul Boddie

3.4.2. Py2exe

Py2exe 是一个 distutils 扩展 (参阅 Extending Distutils), 它包 Python 脚本包装成一个可执行的 Windows 程序 (*.exe 文件). 但你做这点的时候, 你可以发布你的应用而无需你的用户安装 Python.

3.4.3. WConio

因为 Python 高级终端处理层 (advanced terminal handling layer), curses, 仅限于 Unix-like 系统, 因此在 Windows 上同样有一个独有的库: Python 在 Windows 上的控制台 I/O (Windows Console I/O for Python).

WConio 是 Turbo-C 里 CONIO.H 文件的一个包装器, 用于创建文本用户接口.

3.5. 在 Windows 上编译 Python

如果你想自己编译 CPython, 你要做的第一件事情是获得 源代码. 你可以选择下载最后发布版本的源代码, 也可以抓取一个新鲜的 checkout.

对与 Microsoft Visual C++, 官方 Python 发行版使用的编译器, 源代码树包含 solutions/project 文件. 参看它们各自目录下的 readme.txt 文件:

目录 MSVC 版本 Visual Studio 版本
PC/VC6/ 6.0 97
PC/VS7.1/ 7.1 2003
PC/VS8.0/ 8.0 2005
PCbuild/ 9.0 2008

注意, 不是所有这些目的都被完整地支持. 阅读发行说明来, 对应你的版本, 看看相应官方发行版编译时使用的编译器版本.

检查 PC/readme.txt 获得建造流程的常规信息.

对于扩展模块, 参阅 Building C and C++ Extensions on Windows.

See also

Python + Windows + distutils + SWIG + gcc MinGW
or “Creating Python extensions in C/C++ with SWIG and compiling them with MinGW gcc under Windows” or “Installing Python extension with distutils and without Microsoft Visual C++” by Sébastien Sauvage, 2003
MingW – Python extensions
by Trent Apted et al, 2007

3.6. 其它资源

See also

Python Programming On Win32
“Help for Windows Programmers” by Mark Hammond and Andy Robinson, O’Reilly Media, 2000, ISBN 1-56592-621-8
A Python for Windows Tutorial
by Amanda Birmingham, 2004