Tuesday, July 12, 2011

Windows 的 Python 加载器

原文链接:A Python Launcher For Windows

Mark Hammond ( pywin32 的作者以及 Windows 版 Python 的长期支持者)写了 PEP 397,描述了 Windows 下的一个新的 Python 加载器。Vinay Sanjip ( logging 模组的作者)最近实现了这个加载器,下载地址是 https://bitbucket.org/vinay.sajip/pylauncher/downloads

该加载器为 Windows 下的 Python 脚本(.py.pyw 文件)提供了选择 Python 版本的功能,从而可以方便地同时使用 Python 2 和 Python 3 两个版本。

Windows 用户可以试着下载并且测试一下这个加载器,帮助 Python 开发人员解决掉剩下的问题。该加载器是以独立应用程序打包的,而且会支持目前可用的所有版本的 Python。我们的目标是一旦有了加载器的最终版,我们就将其集成到 Python 3.3 中,当然我们还会为其他版本的 Python 提供这个加载器的独立安装包。

这个加载器有两个版本,launcher.msi 会将文件安装到 Program Files 目录下,而 launchsys.msi 会将其安装到 Windows 的 System32 文件夹下。我们还为 64 位 Windows 提供了 64 位的安装包。

加载器的一些细节

PEP 397 中有对该加载器的行为的完整说明。简单概括有如下几点:

  • 该加载器提供了两个可执行文件——命令行版本的 py.exe 以及 GUI 版的 pyw.exe
  • 加载器将被注册为 .py.pyw 文件的默认处理工具。
  • 当执行脚本时,加载器会从脚本中寻找 Unix 式样的含 #! (shebang) 的一行,它会识别出 python (系统默认的 Python 版本)、python2 (默认的 Python 2 发行版)、``python3`` (默认的 Python 3 发行版)这几个字样。你还可以为不一样的计算机和不一样的用户定制不同的加载行为。
  • 单独执行 py.exe 命令会调出 Python 的交互式解释器。py.exe 提供命令行参数支持,py -2 会加载 Python 2,py -3 会加载 Python 3,而 py 则会加载系统默认的 Python 版本。

简单的使用说明

安装以后,加载器会将自己与 .py.pyw 文件关联起来。除非你特别干预,脚本在运行时还是会使用默认的 Python 版本,所以你实际使用时将看不到任何变化。如果你经常使用命令行的话,你可以考虑将 .py 添加到你的 PATHEXT 环境变量中,这样你的脚本就不会在独立的命令控制台执行了。

如果要指定脚本使用 Python 2 编译器,只要将脚本的第一行写成如下格式就可以了:

#!/usr/bin/env python2

这样写和 Unix 是兼容的。如果你不需要兼容 Unix,写成 #!python2 也可以。

如果你想要指定脚本使用 Python 3,那你需要为脚本添加:

#!/usr/bin/env python3

你还可以使用下面这些命令启动 Python 解释器:

# Default version of Python
py
# Python 2
py -2
# Python 3
py -3

前提是你已经将 py.exe 加入了你的路径设置。launchsys 版的加载器会为你自动做这个设置,不过 launcher.msi 的安装目录(C:\Program Files\Python Launcher) 需要被手动加到路径中。

进一步阅读

下面的几个 python-dev 邮件组的讨论内容包含了一些关键的内容:

No comments:

Post a Comment