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.bat
。msconfig是此文件的图形界面。
查看环境变量也可以更直接地执行:命令提示符将自动扩展包装成百分号的字符串:
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\PythonPath
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
sys.path
- 如果环境变量
PYTHONHOME
设置,它被假定为“Python Home”。否则,主Python可执行文件的路径用于定位一个“地标文件”(Lib\os.py
)来推导“Python Home”。如果找到一个Python家,相关子目录加入到sys.path
(Lib
,plat-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执行所有脚本,例如(可能需要管理权限)通过常用的工具来设置它:
-
启动命令提示符。
-
将正确的文件组与
.py
脚本相关联:assoc .py = Python.File
-
将所有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.1
和python2.7
将不会咨询任何选项,因为版本完全指定。 - 如果
PY_PYTHON=3
,命令python
和python3
都将使用最新安装的Python 3版本。 - 如果
PY_PYTHON=3.1-32
,命令python
将使用3.1的32位实现,而命令python3
将使用最新安装的Python(PY_PYTHON根本没有被考虑作为主要版本被指定。) - 如果
PY_PYTHON=3
和PY_PYTHON3=3.1
,命令python
和python3
将都特别使用3.1
除了环境变量,可以在启动器使用的.INI文件中配置相同的设置。调用INI文件中的部分,[defaults]
并且键名称将与没有前导PY_
前缀的环境变量相同(并注意INI文件中的键名称不区分大小写。)环境变量的内容将覆盖指定的在INI文件中。
例如:
- 设置
PY_PYTHON=3.1
等效于INI文件,其中包含:
[默认]
python = 3.1
- 设置
PY_PYTHON=3
并PY_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.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分发中。