與大多數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分發中。