Python基础知识——Windows上使用python

与大多数Unix系统和服务不一样,Windows不须要Python本地,所以不预安装一个版本的Python。可是,CPython团队已经为每一个版本编译Windows安装程序(MSI软件包)多年。php

随着Python的不断发展,一些之前被支持的平台再也不受支持(因为缺少用户或开发人员)。检查PEP 11有关全部不受支持的平台的详细信息。html

有关 具备预编译安装程序的平台的详细信息,请参阅Python for Windowspython

也能够看看web

Python on XP
“7分钟到”你好世界!“由Richard Dooling,2006年
在Windows上安装
在“  Dive into Python:Python from novice to pro ”by Mark Pilgrim,2004,ISBN 1-59059-356-1
对于Windows用户
在“安装Python”在“  A字节的Python ”由Swaroop CH,2003

1.1 可选捆绑

除了标准的CPython分发以外,还有包含附加功能的修改包。如下是热门版本及其主要功能的列表:编程

ActivePython
安装程序具备多平台兼容性,文档,PyWin32
Enttought Python分发
热门模块(如PyWin32)及其各自的文档,用于构建可扩展Python应用程序的工具套件

请注意,这些包极可能安装版本的Python。windows

1.2 配置的Python 

为了无瑕疵地运行Python,您可能须要在Windows中更改某些环境设置。python2.7

1.2.1 附记:设置环境变量

Windows具备用于更改环境变量的内置对话框(如下指南适用于XP经典视图):右键单击计算机的图标(一般位于桌面上并称为“个人计算机”),而后选择 属性。而后,打开高级选项卡,单击环境变量按钮。ide

总之,你的路径是:函数

个人电脑‣属性‣高级‣环境变量

在此对话框中,您能够添加或修改用户和系统变量。要更改系统变量,您须要对计算机进行非受限访问(即管理员权限)。工具

将变量添加到环境的另外一种方法是使用set 命令:

设置PYTHONPATH =%PYTHONPATH%; C:\ My_python_lib

要使此设置永久,您能够将相应的命令行添加到您的autoexec.batmsconfig是此文件的图形界面。

查看环境变量也能够更直接地执行:命令提示符将自动扩展包装成百分号的字符串:

echo%PATH%

咨询集/?有关此行为的详细信息。

也能够看看

http://support.microsoft.com/kb/100843
Windows NT中的环境变量
http://support.microsoft.com/kb/310519
如何在Windows XP中管理环境变量
http://www.chem.gla.ac.uk/~louis/software/faq/q1.html
设置环境变量,Louis J. Farrugia

1.2.2 寻找Python可执行程序

更改版本3.3。

除了使用自动建立的Python解释器的开始菜单项,您可能须要在命令提示符下启动Python。从Python 3.3开始,安装程序有一个选项为您设置。

在“自定义Python 3.3”屏幕上,能够启用一个名为“将python.exe添加到搜索路径”的选项,让安装程序将您的安装程序放入 %PATH%。这容许你键入python来运行解释器。所以,您还可使用命令行选项执行脚本,请参阅命令行文档。

若是在安装时未启用此选项,则能够随时从新运行安装程序以进行选择。

另外一种方法是手动修改 %PATH%使用Excursus中的说明:设置环境变量。你须要设置你的%PATH% 环境变量包括Python分发包的目录,由来自其余条目的分号分隔。一个示例变量可能以下所示(假设前两个条目是Windows的默认值):

C:\ WINDOWS \ system32; C:\ WINDOWS; C:\ Python33

1.2.3 查找模块

Python一般将其库(以及从而您的site-packages文件夹)存储在安装目录中。因此,若是你已经安装了Python C:\Python\,默认库将驻留在C:\Python\Lib\第三方模块应该存储在 C:\Python\Lib\site-packages\

这是如何sys.path填充在Windows:

  • 在开始处添加一个空条目,其对应于当前目录。
  • 若是环境变量 PYTHONPATH存在,如环境变量中 所述,其条目将添加到下一个。请注意,在Windows上,此变量中的路径必须用分号分隔,以便与驱动器标识符(C:\等)中使用的冒号区分开。
  • 其余“应用程序路径”能够在注册表中做为子键和子选项下的 子键添加 。以分号分隔的路径字符串做为其默认值的子键将致使添加每一个路径。(请注意,全部已知的安装程序仅使用HKLM,所以HKCU一般为空。)\SOFTWARE\Python\PythonCore\version\PythonPathHKEY_CURRENT_USERHKEY_LOCAL_MACHINEsys.path
  • 若是环境变量 PYTHONHOME设置,它被假定为“Python Home”。不然,主Python可执行文件的路径用于定位一个“地标文件”(Lib\os.py)来推导“Python Home”。若是找到一个Python家,相关子目录加入到sys.path (Libplat-win等)都是基于该文件夹上。不然,核心Python路径是从存储在注册表中的PythonPath构造的。
  • 若是Python Home没法找到,没有 PYTHONPATH在环境中指定,而且没有找到注册表条目,则使用具备相对条目的默认路径(例如.\Lib;.\plat-win,等)。

这一切的最终结果是:

  • 当运行python.exe或主Python目录中的任何其余.exe(安装的版本,或直接从PCbuild目录),核心路径被推导,而且注册表中的核心路径被忽略。注册表中的其余“应用程序路径”老是被读取。
  • 当Python托管在另外一个.exe(不一样的目录,经过COM嵌入等),“Python Home”不会被推导出来,因此使用从注册表的核心路径。注册表中的其余“应用程序路径”老是被读取。
  • 若是Python找不到它的家,没有注册表(例如,冻结的.exe,一些很是奇怪的安装设置),你获得一个路径与一些默认,但相对的路径。

1.2.4 执行脚本

从Python 3.3开始,Python包括一个启动器,它有助于运行Python脚本。有关详细信息,请参阅Python Launcher for Windows

1.2.5 执行不带Python启动器的脚本

没有安装Python启动程序,Python脚本(带有扩展名的文件 .py)将由python.exe默认执行。此可执行文件打开一个终端,即便程序使用GUI,该终端仍保持打开。若是你不想发生这种状况,使用扩展.pyw,这将致使脚本由pythonw.exe默认状况下(两个可执行文件都位于Python安装目录的顶层)。这将禁止启动时的终端窗口。

你也能够.py使用pythonw.exe执行全部脚本,例如(可能须要管理权限)经过经常使用的工具来设置它:

  1. 启动命令提示符。

  2. 将正确的文件组与.py脚本相关联:

    assoc .py = Python.File
    
  3. 将全部Python文件重定向到新的可执行文件:

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

1.3 Python的启动为Windows 

新版本3.3。

Windows的Python启动器是一个实用程序,它能够帮助定位和执行不一样的Python版本。它容许脚本(或命令行)指示特定Python版本的首选项,并将定位和执行该版本。

1.3.1 入门

1.3.1.1 从命令行

你应该确保启动器在你的PATH - 根据它的安装它可能已经在那里,但检查,以防万一它不是。

从命令提示符处,执行如下命令:

py

你应该发现你安装的最新版本的Python 2.x已经启动了 - 它能够正常退出,任何额外的命令行参数指定将直接发送到Python。

若是您安装了多个版本的Python 2.x(例如,2.6和2.7),您将注意到Python 2.7已经启动 - 要启动Python 2.6,请尝试如下命令:

py -2.6

若是您安装了Python 3.x,请尝试如下命令:

py -3

你应该找到最新版本的Python 3.x启动。

1.3.1.2 从脚本

让咱们建立一个测试Python脚本 - 建立一个hello.py用如下内容调用的文件

#!蟒蛇
import sys
sys.stdout.write(“hello from Python%s \ n”%(sys.version,))

从hello.py所在的目录中,执行命令:

py hello.py

您应该注意到,打印了最新的Python 2.x安装的版本号。如今尝试改变第一行为:

#!python3

从新执行命令如今应该打印最新的Python 3.x信息。与上面的命令行示例同样,您能够指定更明确的版本限定符。假设你安装了Python 2.6,尝试改变第一行,你应该找到打印的2.6版本信息。#! python2.6

1.3.1.3 从文件关联

启动程序应该已与Python的文件关联(即.py, .pyw.pyc.pyo文件)安装时。这意味着,当您从Windows资源管理器中双击其中一个文件时,将使用启动器,所以您可使用上述相同的工具来让脚本指定应使用的版本。

这样作的主要好处是,单个启动器能够同时支持多个Python版本,具体取决于第一行的内容。

1.3.1.4 Shebang行

若是脚本文件的第一行开头#!,它被称为“shebang”行。Linux和其余相似Unix的操做系统本地支持这样的行,而且一般在这样的系统上使用以指示如何执行脚本。此启动器容许相同的设施在Windows上使用Python脚本,上面的示例演示了它们的用法。

要容许Python脚本中的shebang行在Unix和Windows之间移植,此启动器支持多个“虚拟”命令来指定要使用的解释器。支持的虚拟命令是:

  • /usr/bin/env python
  • /usr/bin/python
  • /usr/local/bin/python
  • python

例如,若是脚本的第一行以

#!/ usr / bin / python

将定位和使用默认的Python。因为许多Python脚本编写的工做在Unix上已经有这一行,你应该发现这些脚本能够由启动器使用没有修改。若是你正在Windows上编写一个新的脚本,你但愿在Unix上有用,你应该使用一个shebang行开始/usr

1.3.1.5 shebang行中的参数

shebang行还能够指定要传递给Python解释器的其余选项。例如,若是你有一个shebang行:

#!/ usr / bin / python -v

而后Python将开始使用该-v选项

1.3.2 自定义

1.3.2.1 经过INI文件定制

两个.ini文件将由py.ini当前用户的“应用程序数据”目录(即,经过调用带有CSIDL_LOCAL_APPDATA的Windows函数SHGetFolderPath返回的目录)和py.ini与启动器相同的目录中的启动器搜索。相同的.ini文件用于'控制台'版本的启动器(即py.exe)和'windows'版本(即pyw.exe)

在“应用程序目录”中指定的自定义将优先于可执行文件旁边的一个,所以可能没有对启动器旁边的.ini文件具备写访问权的用户能够覆盖该全局.ini文件中的命令)

1.3.2.2 自定义默认的Python版本

在某些状况下,能够在命令中包括版本限定符,以指示命令将使用哪一个版本的Python。版本限定符以主版本号开头,能够选择性地后跟句点('。')和次要版本说明符。若是指定了minor限定符,则能够可选地后跟“-32”,以指示使用该版本的32位实现。

例如,shebang行#!python没有版本限定符,而 #!python3有一个版本限定符只指定主版本。

若是在命令中未找到版本限定符,则PY_PYTHON能够将环境变量 设置为指定默认版本限定符 - 默认值为“2”。注意,该值能够仅指定主版本(例如“2”)或major.minor限定符(例如“2.6”),或甚至major.minor-32。

若是未找到次版本限定符,则能够将环境变量 PY_PYTHON{major}(其中{major}是上面肯定的当前主版本限定符)设置为指定完整版本。若是没有找到这样的选项,启动器将枚举已安装的Python版本,并使用为主要版本找到的最新次要版本,尽管不能保证,但多是该系列中最近安装的版本。

在安装了相同(major.minor)Python版本的32位和64位实现的64位Windows上,64位版本将始终是首选。这对于32位和64位的启动器实现都是正确的--32位启动器将更喜欢执行指定版本的64位Python安装(若是可用)。这是由于能够预测启动器的行为只知道什么版本安装在PC上,而不考虑它们被安装的顺序(即,不知道32或64位版本的Python和相应的启动器是最后安装)。如上所述,能够在版本说明符上使用可选的“-32”后缀来更改此行为。

例子:

  • 若是没有相关的选项设置,命令python和 python2将使用安装了最新的Python 2.x的版本,并命令python3将使用安装最新的Python 3.x的。
  • 命令python3.1python2.7将不会咨询任何选项,由于版本彻底指定。
  • 若是PY_PYTHON=3,命令pythonpython3都将使用最新安装的Python 3版本。
  • 若是PY_PYTHON=3.1-32,命令python将使用3.1的32位实现,而命令python3将使用最新安装的Python(PY_PYTHON根本没有被考虑做为主要版本被指定。)
  • 若是PY_PYTHON=3PY_PYTHON3=3.1,命令 pythonpython3将都特别使用3.1

除了环境变量,能够在启动器使用的.INI文件中配置相同的设置。调用INI文件中的部分,[defaults]而且键名称将与没有前导PY_前缀的环境变量相同(并注意INI文件中的键名称不区分大小写。)环境变量的内容将覆盖指定的在INI文件中。

例如:

  • 设置PY_PYTHON=3.1等效于INI文件,其中包含:
[默认]
python = 3.1
  • 设置PY_PYTHON=3PY_PYTHON3=3.1等效于INI文件包含:
[默认]
python = 3
python3 = 3.1

3.4.5。诊断

若是PYLAUNCH_DEBUG设置了环境变量(到任何值),启动程序将打印诊断信息到stderr(即到控制台)。虽然这些信息同时冗长简洁,但它应该可让你看到Python的版本是什么,为何选择一个特定的版本,以及用于执行目标Python的精确命令行。

1.4 附加模块

即便Python的目标是在全部平台之间移植,有一些Windows独有的功能。存在几个模块,在标准库和外部和片断中使用这些功能。

Windows特定标准模块记录在 MS Windows特定服务中

1.4.1 PyWin32 

PyWin32模块由Mark哈蒙德是先进的Windows特定的支持模块的集合。这包括如下工具:

PythonWin是PyWin32附带的示例MFC应用程序。它是一个带有内置调试器的可嵌入IDE。

也能够看看

Win32我如何...?
做者:Tim Golden
Python和COM
由David和Paul Boddie

1.4.2 cx_Freeze 

cx_Freeze是一个distutils 扩展(参见扩展Distutils),它将Python脚本包装到可执行的Windows程序(文件)中。当你这样作,你能够分发你的应用程序,而不须要你的用户安装Python。*.exe

1.4.3 WConio 

因为Python的高级终端处理层curses仅限于类Unix系统,所以还有一个专门针对Windows的库:用于Python的Windows控制台I / O。

WConio是Turbo-C的包装器CONIO.H,用于建立文本用户界面。

1.5 在Windows编译的Python 

若是你想本身编译CPython,首先你应该作的是获取 源代码您能够下载最新版本的来源或只是抓一个新的结账

源代码树包含Microsoft Visual C ++的构建解决方案和项目文件,这是用于构建官方Python版本的编译器。查看readme.txt在他们各自的目录:

目录 MSVC版本 Visual Studio版本
PC/VS9.0/ 9.0 2008年
PCbuild/ 10.0 2010

请注意,目录中的任何构建目录PC不必定彻底支持。该PCbuild目录包含用于构建正式版本的编译器的文件。

检查PCbuild/readme.txt构建过程的通常信息。

有关扩展模块,请参阅Windows上的Building C和C ++扩展

也能够看看

Python + Windows + distutils + SWIG + gcc MinGW
或“使用SWIG在C / C ++中建立Python扩展并使用Windows下的MinGW gcc编译Python扩展”或SébastienSauvage,2003年“使用distutils安装Python扩展而不使用Microsoft Visual C ++”
MingW - Python扩展
由Trent Apted等人,2007

1.6 其余资源

也能够看看

Python编程在Win32
“Help for Windows Programmers”,Mark Hammond和Andy Robinson,O'Reilly Media,2000,ISBN 1-56592-621-8
Python for Windows教程
由Amanda Birmingham,2004年
PEP 397 - 适用于Windows的Python启动器
将启动器的提议包括在Python分发中。
相关文章
相关标签/搜索