首页 > 代码库 > Python基础知识——Windows上使用python

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

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

随着Python的不断发展,一些以前被支持的平台不再受支持(由于缺乏用户或开发人员)。检查PEP 11有关所有不受支持的平台的详细信息。

  • 仍然支持Windows CE。
  • 在Cygwin的安装程序提供安装Python解释器,以及(参见Cygwin包的源,维护者的版本)

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

也可以看看

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。

1.2 配置的Python 

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

1.2.1 附记:设置环境变量

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

总之,你的路径是:

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

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

将变量添加到环境的另一种方法是使用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特定的支持模块的集合。这包括以下工具:

  • 组件对象模型(COM)
  • Win32 API调用
  • 注册表
  • 事件日志
  • Microsoft基础类(MFC)用户界面

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分发中。

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