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_USER
或HKEY_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 里设置它, 例如 (可能需要管理员权限):
打开一个命令行.
关联
.py
脚本到正确的文件组:assoc .py=Python.File
重定向所有 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 独有支持的模块的一个集. 包含的工具有:
- 组件对象模型 (COM)
- Win32 API 调用
- 注册表
- 事件日志
- Microsoft Foundation Classes (MFC) 用户接口
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.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