【點擊閱讀原文可以跳轉至Python3.10最新版全套教程】
本文檔旨在概述在 Microsoft Windows 上使用 Python 時應了解的特定於 Windows 的行為。
與大多數UNIX系統和服務不同,Windows系統沒有預安裝Python。多年來CPython 團隊已經編譯了每一個 發行版 的Windows安裝程序(MSI 包),已便Windows 用戶下載和安裝。這些安裝程序主要用於每個用戶單獨安裝Python時,添加核心解釋器和庫。安裝程序還可以為一臺機器的所有用戶安裝,並且可以為應用程式本地分發提供單獨的zip文件。
如 PEP 11 所述,Python 發布版對某個 Windows 平臺的支持僅限於被 Microsoft 視為處於延長支持周期內的版本。這意味著 Python 3.10 支持 Windows 8.1 及其後的版本。如果你需要 Windows 7 支持,請安裝 Python 3.8。
Windows提供了許多不同的安裝程序,每個安裝程序都有一定的優點和缺點。
完整安裝程序 內含所有組件,對於使用Python 進行任何類型項目的開發人員而言,它是最佳選擇。
Microsoft Store包 是一個簡單的Python 安裝,適用於運行腳本和包,以及使用IDLE或其他開發環境。它需要Windows 10,但可以安全地安裝而不會破壞其他程序。它還提供了許多方便的命令來啟動Python及其工具。
nuget.org 安裝包 是用於持續集成系統的輕量級安裝。它可用於構建Python包或運行腳本,但不可更新且沒有用戶界面工具。
可嵌入的包 是Python的最小安裝包,適合嵌入到更大的應用程式中。
4.1. 完整安裝程序4.1.1. 安裝步驟四個 Python 3.10 安裝程序可供下載 - 32位和64位版本的各有兩個。 web installer (網絡安裝包)是一個小的初始化工具,它將在安裝過程中,根據需要自動下載所需的組件。 offline installer (離線安裝包)內含默認安裝所需的組件,可選擇功能仍需要Internet連接下載。請參閱 當安裝時不下載 以了解在安裝過程中避免下載的其他方法。
啟動安裝程序後,可以選擇以下兩個選項之一:
如果你選擇「馬上安裝」:
選擇「客製化安裝」將允許你選擇所需的項目進行安裝,安裝位置與其他選擇或安裝後的所需進行的動作。你將需要使用此選項「除錯特徵」或「二進位方式」進行安裝。
如要為全部用戶安裝,應選擇「自定義安裝」。在這種情況下:
4.1.2. 刪除 MAX_PATH 限制歷史上Windows的路徑長度限制為260個字符。這意味著長於此的路徑將無法解決並導致錯誤。
在最新版本的 Windows 中,此限制可被擴展到大約 32,000 個字符。但需要讓管理員激活「啟用 Win32 長路徑」組策略,或在註冊表鍵 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 中設置 LongPathsEnabled 為 1。
這允許 open() 函數,os 模塊和大多數其他路徑功能接受並返回長度超過 260 個字符的路徑。
更改上述選項後,無需進一步配置。
3.6 版更變: Python中啟用了對長路徑的支持。
4.1.3. 安裝排除使用者介面安裝程序UI中的所有選項也可以從命令行指定,允許腳本安裝程序在許多機器上複製安裝,而無需用戶交互。還可以在不禁用UI的情況下設置這些選項,以更改一些默認值。
要完全隱藏安裝程序UI並靜默安裝Python,請使用 /quiet 選項。要跳過用戶交互但仍然顯示進度和錯誤,請使用 /passive 選項。可以通過 /uninstall 選項立即開始刪除Python - - 不會顯示任何提示。
所有其他選項都傳遞為 name=value ,其中值通常是 0 來禁用某個特性, 1 來啟用某個特性或路徑。可用選項的完整列表如下所示。
名稱
描述
預設
InstallAllUsers
為所有用戶安裝。
0
TargetDir
安裝目錄
基於InstallAllUsers選擇
DefaultAllUsersTargetDir
為所有用戶安裝時的默認安裝路徑
%ProgramFiles%\Python X.Y 或 %ProgramFiles(x86)%\Python X.Y
DefaultJustForMeTargetDir
預設安裝目錄給 只有給我 安裝方式
%LocalAppData%\Programs\PythonXY 或 %LocalAppData%\Programs\PythonXY-32 或 %LocalAppData%\Programs\PythonXY-64
DefaultCustomTargetDir
UI中顯示的默認自定義安裝目錄
(空)
AssociateFiles
當執行程序也被安裝時創造檔案關聯
1
CompileAll
編譯所有 .py 檔案為 .pyc。
0
PrependPath
將install和Scripts目錄添加到 PATH 以及將 .PY 添加到 PATHEXT
0
Shortcuts
如果已安裝,為解釋器,文檔和IDLE創建快捷方式
1
Include_doc
安裝Python文件
1
Include_debug
安裝調試二進位文件
0
Include_dev
安裝開發人員頭文件和庫
1
Include_exe
安裝 python.exe 及相關文件
1
Include_launcher
安裝 適用於Windows的Python啟動器 .
1
InstallLauncherAllUsers
為所有用戶安裝 適用於Windows的Python啟動器 。
1
Include_lib
安裝標準庫和擴展模塊
1
Include_pip
安裝捆綁的pip和setuptools
1
Include_symbols
安裝調試符號(*.pdb)
0
Include_tcltk
安裝Tcl/Tk 支持和IDLE
1
Include_test
安裝標準庫測試套件
1
Include_tools
安裝實用程序腳本
1
LauncherOnly
僅安裝啟動器。這將覆蓋大多數其他選項。
0
SimpleInstall
禁用大多數安裝UI
0
SimpleInstallDescription
使用簡化安裝UI時顯示的自定義消息。
(空)
例如,要以靜默方式全局安裝默認的Python,您可以(在命令提示符>)使用以下命令:
python-3.9.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0
要允許用戶在沒有測試套件的情況下輕鬆安裝Python的個人副本,可以使用以下命令提供快捷方式。這將顯示一個簡化的初始頁面,不允許自定義:
python-3.9.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0
SimpleInstall=1 SimpleInstallDescription="Just for me, no test suite."
(請注意,省略啟動器也會省略文件關聯,並且僅在全局安裝包含啟動器時才建議用於每用戶安裝。)
上面列出的選項也可以在一個名為 unattend.xml 的文件中與可執行文件一起提供。此文件指定選項和值的列表。作為屬性提供的值,(如果可能)它將轉換為數字。作為文本提供的值,始終保留為字符串。此示例文件設置與上一示例採用相同的選項:
<Options>
<Option Name="InstallAllUsers" Value="no" />
<Option Name="Include_launcher" Value="0" />
<Option Name="Include_test" Value="no" />
<Option Name="SimpleInstall" Value="yes" />
<Option Name="SimpleInstallDescription">Just for me, no test suite</Option>
</Options>
由於下載的初始安裝包中未包含Python的某些可選功能,如果選擇安裝這些功能可能需要Internet連接。為了避免這種需要,可以按需下載所有可能的組件,以創建一個完整的布局,該布局將不再需要internet連接,而不管所選擇的特性是什麼。請注意,此下載可能比要求的要大,但是如果要執行大量安裝,則擁有本地緩存的副本非常有用。
從命令提示符執行以下命令以下載所有可能的必需文件。請記得要將 python-3.9.0.exe 替換為安裝程序的實際名稱,並在單獨的目錄中創建子目錄以避免同名文件間的衝突。
python-3.9.0.exe /layout [optional target directory]
您也可以指定 /quiet 選項來隱藏進度顯示。
4.1.5. 修改安裝安裝Python後,您可以通過Windows中的「程序和功能」工具添加或刪除功能。選擇Python條目並選擇「卸載/更改」以在維護模式下打開安裝程序。
「修改」 允許您通過修改複選框來添加或刪除功能 - 未更改的複選框將不會安裝或刪除任何內容。在此模式下無法更改某些選項,例如安裝目錄;要修改這些,您需要完全刪除然後重新安裝Python。
「修復」 將使用當前設置驗證應安裝的所有文件,並替換已刪除或修改的任何文件
「卸載」 將完全刪除Python,但 適用於Windows的Python啟動器 除外,它在「程序和功能」中有自己的條目。
4.2. Microsoft Store包3.7.2 版新加入.
Microsoft Store包是一個易於安裝的Python解釋器,主要用於交互式使用,例如,學生。
要安裝軟體包,請確保您擁有最新的Windows 10更新,並在Microsoft Store應用程式中搜索 "Python 3.10" 。確保您選擇的應用程式由 Python Software Foundation 發布並安裝。
警告
Python將始終在Microsoft Store上免費提供。如果要求您付款,則表示您沒有選擇正確的包。
安裝完成後,可以在開始菜單中找到它來啟動 Python。或者可以在命令提示符或 PowerShell 會話中輸入 python 來啟動。此外可以輸入 pip 或 idle 來使用 pip 和 IDLE。IDLE 也在開始菜單中。
所有這三個命令也可以使用版本號後綴,例如, python3.exe 和 python3.x.exe 以及 python.exe (其中 3.x 是您要啟動的特定版本,例如 3.10 )。在 設置-->主頁-->應用和功能 頁面中,點選 管理可選功能 ,選擇與每個命令關聯的python版本。建議確保 pip 和 idle 與選擇的 python 版本一致。
可以使用 python -m venv 創建虛擬環境並激活並正常使用。
如果你已經安裝了另一個版本的Python並將它添加到你的 PATH 變量中,那麼它將作為 python.exe 而不是來自Microsoft Store的那個。要訪問新安裝,請使用 python3.exe 或 python3.x.exe 。
py.exe 啟動器將檢測此 Python 安裝版,但會優先使用來自傳統安裝器的安裝版。
要刪除Python,請打開「設置」並使用「應用程式和功能」,或者在「開始」中找到Python,然後右鍵單擊以選擇「卸載」。卸載將刪除該已安裝Python程序中的所有軟體包,但不會刪除任何虛擬環境
4.2.1. 已知的問題由於Microsoft Store應用程式的限制,Python腳本可能無法對共享位置(如 TEMP )和註冊表進行完全寫入訪問。相反,它將寫入私人副本。如果腳本必須修改共享位置,則需要安裝完整安裝程序。
有關此限制的技術原理的更多細節,請查詢 Microsoft 已打包完全可信應用的文檔,當前位於 docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-behind-the-scenes
4.3. nuget.org 安裝包3.5.2 版新加入.
nuget.org是一個精簡的Python環境,用於在沒有全局安裝Python的系統的持續集成和構建。雖然Nuget是「.NET的包管理器」,但是對於包含構建時工具的包來說,它也可以很好地工作。
訪問 nuget.org 獲取有關使用nuget的最新信息。下面的摘要對Python開發人員來說已經足夠了。
nuget.exe 命令行工具可以直接從 https://aka.ms/nugetclidl 下載,例如,使用curl或PowerShell。使用該工具安裝64位或32位最新版本的Python:
nuget.exe install python -ExcludeVersion -OutputDirectory .
nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory .
要選擇特定版本,請添加 -Version 3.x.y 。輸出目錄可以從 . 更改,包將安裝到子目錄中。默認情況下,子目錄的名稱與包的名稱相同,如果沒有 -ExcludeVersion 選項,則此名稱將包含已安裝的特定版本。子目錄裡面是一個包含Python安裝的 tools 目錄:
# Without -ExcludeVersion
> .\python.3.5.2\tools\python.exe -V
Python 3.5.2
# With -ExcludeVersion
> .\python\tools\python.exe -V
Python 3.5.2
通常,nuget包不可升級,應該平行安裝較新版本並使用完整路徑引用。或者,手動刪除程序包目錄並再次安裝。如果在構建之間不保留文件,許多CI系統將自動執行此操作。
除了 tools 目錄外,還有一個 build\native 目錄。它包含一個MSBuild屬性文件 python.props ,可以在C++項目中使用該文件來引用Python安裝。包含這些設置將自動在生成中使用標頭和導入庫。
nuget.org上的包信息頁是 www.nuget.org/packages/python 對於64位版本和 www.nuget.org/packages/pythonx86 表示32位版本。
4.4. 可嵌入的包3.5 版新加入.
嵌入式發行版是一個包含最小Python環境的ZIP文件。它旨在作為另一個應用程式的一部分,而不是由最終用戶直接訪問。
解壓縮後,嵌入式發行版(幾乎)與用戶系統完全隔離,包括環境變量、系統註冊表設置和已安裝的軟體包。標準庫作為預先編譯和優化的 .pyc 文件包含在ZIP中,並提供了 python3.dll , python37.dll , python.exe 和 pythonw.exe 文件。不包括Tcl/tk(包括所有依賴項,如Idle),pip和Python文檔。
備註
嵌入式發行版不包括 Microsoft C Runtime ,應用程式安裝程序負責提供此功能。運行時可能已經預先安裝在用戶的系統上或通過Windows Update自動安裝,並且可以通過在系統目錄中找到 ucrtbase.dll 來檢測
第三方軟體包應該由應用程式與嵌入式發行版一起安裝。這個發行版不支持像常規Python安裝那樣使用pip來管理依賴關係,不過可以小心地將pip包含進來並使用它進行自動更新。通常,第三方包應該作為應用程式的一部分(「打包」)處理,以便開發人員在向用戶提供更新之前能夠確保與新版本兼容。
下面描述了這個發行版的兩個推薦用例。
4.4.1. Python應用程式用Python編寫的應用程式並不一定要求用戶了解這一事實。在這種情況下,可以使用嵌入式發行版在安裝包中包含Python的私有版本。根據它應該有多透明(或者相反,它應該看起來有多專業),有兩個選項。
使用專門的可執行文件作為啟動程序需要一些編碼,但為用戶提供了最透明的體驗。使用定製的啟動器,沒有明顯的跡象表明程序是在Python上運行的:圖標可以定製,公司和版本信息可以指定,文件關聯可以正常運行。在大多數情況下,自定義啟動程序應該只需使用硬編碼的命令行就能調用 Py_Main
更簡單的方法是提供批處理文件或生成的快捷方式,使用所需的命令行參數直接調用 python.exe 或 pythonw.exe 。在這種情況下,應用程式將顯示為Python而不是其實際名稱,並且用戶可能無法將其與其他正在運行的Python進程或文件關聯區分開來。
對於後一種方法,包應該與Python可執行文件一起作為目錄安裝,以確保它們在路徑上可用。使用專用的啟動器,包可以位於其他位置,因為在啟動應用程式之前有機會指定搜索路徑。
4.4.2. 嵌入 Python用本地代碼編寫的應用程式通常需要某種形式的腳本語言,嵌入式Python發行版可以用於此目的。通常,應用程式的大部分都是本機代碼,某些部分將調用 python.exe 或直接使用 python3.dll 。無論是哪種情況,將嵌入的發行版解壓縮到應用程式安裝的子目錄中就足以提供可加載的Python解釋器。
與應用程式使用一樣,包可以安裝到任何位置,因為在初始化解釋器之前有機會指定搜索路徑。否則,使用嵌入式發行版和常規安裝之間沒有根本區別。
4.5. 替代捆綁包除了標準的CPython發行版之外,還有一些包含附加功能的修改包。以下是熱門版本及其主要功能的列表:
ActivePython
具有多平臺兼容性的安裝程序,文檔,PyWin32
Anaconda
流行的科學模塊(如numpy,scipy和pandas)和 conda 包管理器。
Canopy
具有編輯器和其他開發工具的「全面的Python分析環境」。
WinPython
特定於Windows的發行版,包含用於構建包的預構建科學包和工具。
請注意,這些軟體包可能不包含最新版本的Python或其他庫,並且不由核心Python團隊維護或支持。
4.6. 設定 Python要從命令提示符方便地運行Python,您可以考慮在Windows中更改一些默認環境變量。雖然安裝程序提供了為您配置PATH和PATHEXT變量的選項,但這僅適用於單版本、全局安裝。如果您經常使用多個版本的Python,請考慮使用 適用於Windows的Python啟動器 。
4.6.1. 附錄:設置環境變量Windows允許在用戶級別和系統級別永久配置環境變量,或臨時在命令提示符中配置環境變量。
要臨時設置環境變量,請打開命令提示符並使用 set 命令:
C:\>set PATH=C:\Program Files\Python 3.9;%PATH%
C:\>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
C:\>python
這些環境變量的更改將應用於在該控制臺中執行的任何其他命令,並且,由該控制臺啟動的任何應用程式都繼承設這些設置。
在百分號中包含的變量名將被現有值替換,允許在開始或結束時添加新值。通過將包含 python.exe 的目錄添加到開頭來修改 PATH 是確保啟動正確版本的Python的常用方法。
要永久修改默認環境變量,請單擊「開始」並搜索「編輯環境變量」,或打開系統屬性的 高級系統設置 ,然後單擊 環境變量 按鈕。在此對話框中,您可以添加或修改用戶和系統變量。要更改系統變量,您需要對計算機進行無限制訪問(即管理員權限)。
備註
Windows會將用戶變量串聯在系統變量 之後 ,這可能會在修改 PATH 時導致意外結果。
PYTHONPATH 變量被Python 2和Python 3的所有版本使用,因此除非它只包含與所有已安裝的Python版本兼容的代碼,否則不要永久配置此變量。
也參考
https://www.microsoft.com/en-us/wdsi/help/folder-variables
環境變數於 Windows NT
https://technet.microsoft.com/en-us/library/cc754250.aspx
用於臨時修改環境變量的SET命令
https://technet.microsoft.com/en-us/library/cc755104.aspx
用於永久修改環境變量的SETX命令
https://support.microsoft.com/en-us/help/310519/how-to-manage-environment-variables-in-windows-xp
如何管理環境變數於 Windows XP
https://www.chem.gla.ac.uk/~louis/software/faq/q1.html
設定環境變數-Louis J. Farrugia
4.6.2. 查找Python可執行文件3.5 版更變.
除了使用自動創建的Python解釋器的開始菜單項之外,您可能還想在命令提示符下啟動Python。安裝程序有一個選項可以為您設置。
在安裝程序的第一頁上,可以選擇標記為「將Python添加到環境變量」的選項,以使安裝程序將安裝位置添加到 PATH 。還添加了 Scripts\ 文件夾的位置。這允許你輸入 python 來運行解釋器,並且 pip 用於包安裝程序。因此,您還可以使用命令行選項執行腳本,請參閱 命令行 文檔。
如果在安裝時未啟用此選項,則始終可以重新運行安裝程序,選擇「修改」並啟用它。或者,您可以使用 附錄:設置環境變量 的方法手動修改 PATH 。您需要將Python安裝目錄添加到 PATH 環境變量中,該內容與其他條目用分號分隔。示例變量可能如下所示(假設前兩個條目已經存在):
C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Python 3.9
3.7 版新加入.
Windows 仍然使用傳統編碼格式作為系統的編碼格式(ANSI 代碼頁)。Python 使用它作為文本文件默認的編碼格式 (即 locale.getpreferredencoding())。
這可能會造成問題,因為網際網路和大多數 Unix 系統包括 WSL (Windows Subsystem for Linux) 廣泛使用 UTF-8。
你可以使用 Python UTF-8 模式 將默認的文本編碼格式改為 UTF-8。要啟用 Python UTF-8 模式 可以通過 -X utf8 命令行選項,或者 PYTHONUTF8=1 環境變量。請參閱 PYTHONUTF8 了解如何啟用 UTF-8 模式,並參閱 附錄:設置環境變量 了解如何修改環境變量。
當 Python UTF-8 模式 啟用時,你仍然可以通過 "mbcs" 編解碼器使用系統編碼格式(ANSI 代碼頁)。
請注意添加 PYTHONUTF8=1 到默認環境變量將會影響你的系統中的所有 Python 3.7+ 應用。如果你有任何 Python 3.7+ 應用仍然依賴於傳統的系統編碼格式,則推薦設置臨時環境變量或使用 -X utf8 命令行選項。
備註
即使在不啟用 UTF-8 模式時,Windows 版的 Python 也會在以下情況中默認使用 UTF-8:
4.8. 適用於Windows的Python啟動器3.3 版新加入.
用於Windows的Python啟動器是一個實用程序,可幫助定位和執行不同的Python版本。它允許腳本(或命令行)指示特定Python版本的首選項,並將定位並執行該版本。
與 PATH 變量不同,啟動器將正確選擇最合適的Python版本。它更傾向於按用戶安裝而不是系統安裝,並按語言版本排序,而不是使用最新安裝的版本。
啟動器最初是在 PEP 397 中指定的。
4.8.1. 開始4.8.1.1. 從命令行3.6 版更變.
全局安裝Python 3.3及更高版本將把啟動器放在你的 PATH 上。啟動程序與所有可用的Python版本兼容,因此安裝哪個版本無關緊要。要檢查啟動程序是否可用,請在命令提示符中執行以下命令:
py
您應該會發現已安裝的最新版本的Python已啟動 - 它可以正常退出,並且將指定的任何其他命令行參數直接發送到Python。
如果您安裝了多個版本的Python(例如,2.7和 3.10 ),您會注意到Python 3.10 啟動 - 如果要啟動Python 2.7,嘗試命令:
py -2.7
如果您想使用 Python 2.x 的最新版本,請嘗試以下命令:
py -2
你會發現Python 2.x 的最新版本已啟動。
如果您看到以下錯誤,則表明您沒有安裝啟動器:
'py' is not recognized as an internal or external command,
operable program or batch file.
除非在安裝時選擇了該選項,單個用戶安裝的Python不會將啟動程序添加到 PATH 。
4.8.1.2. 虛擬環境(Virtual environment)3.5 版新加入.
如果啟動程序運行時沒有明確的Python版本,並且虛擬環境(使用標準庫創建 venv 模塊或外部 virtualenv 工具)處於活動狀態,則啟動程序將運行虛擬環境的解釋器而不是全局的。要運行全局解釋器,請停用虛擬環境,或顯式指定全局Python版本。
4.8.1.3. 從腳本讓我們創建一個測試Python腳本 - 創建一個名為``hello.py``的文件,其中包含以下內容
#! python
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,請嘗試將第一行更改為 #! python2.6 ,你會發現列印的2.6版本信息。
請注意,與交互式使用不同,裸「python」將使用您已安裝的Python 2.x的最新版本。這是為了向後兼容及兼容Unix,其中命令 python 通常是指Python 2。
4.8.1.4. 從檔案關聯安裝時應該將啟動器與Python文件(即 .py, .pyw, .pyc 文件)相關聯。這意味著當您從Windows資源管理器中雙擊其中一個文件時,將使用啟動程序,因此您可以使用上述相同的工具讓腳本指定應使用的版本。
這樣做的主要好處是,單個啟動程序可以同時支持多個Python版本,具體取決於第一行的內容。
4.8.2. Shebang Lines如果腳本文件的第一行以 #! 開頭,則稱為 "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。因為在Unix上編寫的許多Python腳本已經有了這一行,你應該發現這些腳本可以由啟動器使用而無需修改。如果您在Windows上編寫一個新腳本,希望在Unix上有用,那麼您應該使用以 /usr 開頭的一個shebang行。
任何上述虛擬命令都可以顯式指定版本(可以僅為主要版本,也可以為主要版本加次要版本)作為後綴。此外,可以通過在次要版本之後添加 「-32」 來請求 32 位版本。例如 /usr/bin/python2.7-32 將請求使用 32 位 python 2.7。
3.7 版新加入: 從python啟動程序3.7開始,可以通過「-64」後綴調用64位版本。此外,可以指定沒有次要的主要和架構(即 /usr/bin/python3-64 )。
shebang line的 /usr/bin/env 形式還有一個特殊屬性。在尋找已安裝的Python解釋器之前,此表單將搜索可執行文件 PATH 以獲取Python可執行文件。這對應於Unix中 env 程序的行為,該程序將在 PATH 執行搜索。
4.8.3. shebang lines 的參數shebang lines 還可以指定要傳遞給Python解釋器的其他選項。例如,如果你有一個shebang lines :
#! /usr/bin/python -v
然後Python將以 -v 選項啟動
4.8.4. 自定義4.8.4.1. 通過INI文件自定義啟動程序將搜索兩個.ini文件 - 在當前用戶的 "application data" 目錄中搜索 py.ini (即通過使用 CSIDL_LOCAL_APPDATA 調用Windows函數 SHGetFolderPath 返回的目錄)以及與啟動器位於同一目錄中的 py.ini 。相同的.ini文件既用於啟動器的「控制臺」版本(即 py.exe),也用於「windows」版本(即pyw.exe)
「應用程式目錄」中指定的自定義優先於可執行文件旁邊.ini文件的自定義,因此對啟動程序旁邊的.ini文件不具有寫訪問權限的用戶可以覆蓋該全局.ini文件中的命令。
4.8.4.2. 自定義默認的Python版本在某些情況下,可以在命令中包含版本限定符,以指定命令將使用哪個Python版本。版本限定符以主版本號開頭,可以選擇後跟 ('.') 和次版本說明符。此外,可以通過添加 "-32" 或 「-64」 來指定是請求32位還是64位實現。
例如,一個shebang line 的 #!python 行沒有版本限定符,而 #!python3 有一個版本限定符,它只指定一個主要版本。
如果在命令中找不到版本限定符,則可以設置環境變量 PY_PYTHON 以指定默認版本限定符。如果未設置,則默認為 "3"。該變量可以指定能通過命令行傳遞的任何值,比如 "3", "3.7", "3.7-32" 或 "3.7-64"。(請注意 "-64" 選項僅適用於 Python 3.7 或更高版本中包含的啟動器。)
如果沒有找到次要版本限定符,則可以設置環境變量 PY_PYTHON{major} (其中 {major} 是上面確定的當前主要版本限定符)以指定完整版本。如果沒有找到這樣的選項,啟動器將枚舉已安裝的Python版本並使用為主要版本找到的最新次要版本,儘管不能保證,但該版本可能是該系列中最新安裝的版本。
在安裝了相同(major.minor)Python版本的32位和64位的64位Windows上,64位版本將始終是首選。對於啟動程序的32位和64位實現都是如此 -- 這對於啟動程序32位和64位都是正確的 -- 如果可用,32位啟動程序將傾向於執行指定版本的64位Python安裝。這樣就可以預測啟動器的行為,只知道PC上安裝了哪些版本,而不考慮它們的安裝順序(即,不知道32位或64位版本的Python和相應的啟動器是否是最後安裝)。如上所述,可以在版本說明符上使用可選的「-32」或「-64」後綴來更改此行為。
範例:
如果沒有設置相關選項,命令 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文件中指定的內容。
例如:
[defaults]
python=3.1
[defaults]
python=3
python3=3.1
如果設置了環境變量 PYLAUNCH_DEBUG (任何值),啟動器將診斷信息列印到stderr(即:控制臺)。雖然這些信息同時具有冗長 和 簡潔性,但它應該允許您查看Python的版本、選擇特定版本的原因以及用於執行目標Python的確切命令行。
4.9. 查找模塊Python通常將其庫(以及您的site-packages文件夾)存儲在安裝目錄中。因此,如果您已將Python安裝到 C:\Python\ ,則默認庫將駐留在 C:\Python\Lib\ 中,第三方模塊存儲在 C:\Python\Lib\site-packages\ 。
若要完全覆蓋 sys.path ,請創建與DLL(python37._pth)或可執行文件(「python._pth`」)同名的 ._pth 文件,並為要添加的每個路徑指定一行 sys.path 。基於DLL名稱的文件覆蓋基於可執行文件的文件,如果需要,可以為加載運行時的任何程序限制路徑。
當文件存在時,將忽略所有註冊表和環境變量,啟用隔離模式,並且:除非文件中的一行指定 import site ,否則不會導入 site 。以 # 開頭的空白路徑和行將被忽略。每個路徑可以是絕對的或相對於文件的位置。不允許使用除 site 以外的導入語句,並且不能指定任意代碼。
請注意,當指定 import site 時, .pth 文件(沒有前導下劃線)將由 site 模塊正常處理。
當找不到 ._pth 文件時, sys.path 是如何在Windows上填充的:
在開始時,添加一個空條目,該條目對應於當前目錄。
如果環境變量 PYTHONPATH 存在,如 環境變量 中所述,則接下來添加其條目。請注意,在Windows上,此變量中的路徑必須用分號分隔,以區別於驅動器標識符中使用的冒號( C:\ 等)。
額外的 "應用程式路徑" 可以作為子鍵被同時添加到註冊表 HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE 分支下的 \SOFTWARE\Python\PythonCore{version}\PythonPath 中。以分號分隔的路徑字符串作為默認值的子鍵將導致每個路徑都被添加到 sys.path 中。(請注意所有已知的安裝程序都只使用 HKLM,因此 HKCU 通常為空。)
如果設置了環境變量 PYTHONHOME ,則將其假定為 「Python 主目錄」 。否則,主Python可執行文件的路徑用於定位 「landmark 文件」 ( Lib\os.py 或 pythonXY.zip )以推斷 」Python 主目錄「 。如果找到了Python主目錄,則基於該文件夾將相關的子目錄添加到 sys.path (Lib , plat-win 等)。否則,核心Python路徑是從存儲在註冊表中的PythonPath構造的。
如果找不到Python Home,也沒有指定 PYTHONPATH 環境變量,並且找不到註冊表項,則使用具有相對條目的默認路徑(例如 .\Lib; .\plat-win 等等)。
如果在主可執行文件旁邊或在可執行文件上一級的目錄中找到 pyvenv.cfg 文件,則以下變體適用:
最終這所有的結果為:
運行 python.exe ,或主Python目錄中的任何其他.exe(安裝版本,或直接來自PCbuild目錄)時,推導出核心路徑,並忽略註冊表中的核心路徑。始終讀取註冊表中的其他「應用程式路徑」。
當Python託管在另一個.exe(不同的目錄,通過COM嵌入等)時,將不會推斷出「Python Home」,因此使用了來自註冊表的核心路徑。始終讀取註冊表中的其他「應用程式路徑」。
如果Python找不到它的主目錄並且沒有註冊表值(凍結的.exe,一些非常奇怪的安裝設置),那麼你會得到一條帶有一些默認但相對的路徑的路徑。
對於那些想要將Python捆綁到其應用程式或發行版中的人,以下建議將防止與其他安裝衝突:
在您的可執行文件中包含一個 ._pth 文件,其中包含目錄。這將忽略註冊表和環境變量中列出的路徑,並忽略 site ,除非列出 import site 。
如果你在自己的可執行文件中加載 python3.dll 或 python37.dll ,在 Py_Initialize() 之前,要顯式調用 Py_SetPath() 或(至少) Py_SetProgramName()
清除 和/或 覆蓋 PYTHONPATH 並在啟動來自應用程式的 python.exe 之前設置 PYTHONHOME 。
如果您不能使用前面的建議(例如,您是一個允許人們直接運行 python.exe 的分發版),請確保安裝目錄中存在 landmark 文件 (Lib\os.py)。(請注意,在 ZIP 文件中不會檢測到該文件,但會檢測到正確命名的 ZIP 文件。)
這些將確保系統範圍安裝中的文件不會優先於與應用程式捆綁在一起的標準庫的副本。否則,用戶可能會在使用您的應用程式時遇到問題請注意,第一個建議是最好的,因為其他建議可能仍然容易受到註冊表和用戶站點包中的非標準路徑的影響。
3.6 版更變:3.6 版後已棄用:在 Modules (不是 PythonPath )下的註冊表中指定的模塊可以通過以下方式導入 importlib.machinery.WindowsRegistryFinder 。在Windows上,此查找程序在3.6.0及更早版本的可用,但可能需要在將來顯式添加到 sys.meta_path
4.10. 附加模塊儘管Python的目標是在所有平臺中都可移植,但是Windows有一些獨特的特性。在標準庫和外部都有一些模塊和代碼片段在使用這些特性。
特定於Windows的標準模塊記錄在 Windows系統相關模塊 中。
4.10.1. PyWin32Mark Hammond 的 PyWin32 模塊是一組用於高級Windows特定支持的模塊。這包括以下實用程序:
PythonWin 是PyWin32附帶的一個示例MFC應用程式。它是一個內置調試器的可嵌入IDE。
也參考
Win32 How Do I...?
由 Tim Golden 所著
Python and COM
由 David 與 Paul Boddie 所著
4.10.2. cx_Freezecx_Freeze 是一個 distutils 的擴展 (參見 擴展 Distutils),它將 Python 腳本包裝成可執行的 Windows 程序 (*.exe 文件)。完成此操作後,你就可以分發你的應用程式而無需用戶安裝 Python。
4.10.3. WConio由於Python的高級終端處理層 curses 僅限於類Unix系統,因此Windows還有一個獨立的庫:用於Python的Windows 控制臺 I/O .
WConio 是Turbo-C的 CONIO.H 裝飾器,用於創建文本用戶界面。
4.11. 編譯 Python 在 Windows如果你想自己編譯CPython,首先要做的是獲取 source. 。您可以下載最新版本的原始碼,也可以重新籤出 checkout. 。
原始碼樹包含Microsoft Visual Studio 2015的構建解決方案和項目文件,它是用於構建官方Python版本的編譯器。這些文件位於 PCbuild 目錄中。
檢查 PCbuild/readme.txt 以獲取有關構建過程的一般信息。
有關擴展模塊,請參閱 在 Windows 上構建 C 和 C++ 擴展 。
也參考
Python + Windows + distutils + SWIG + gcc MinGW
或 "Creating Python extensions in C/C++ with SWIG and compiling them with MinGW gcc under Windows" 或 "Installing Python extension with distutils and without Microsoft Visual C++" by Sébastien Sauvage, 2003
4.12. 其他平臺隨著Python的不斷發展,不再支持以前曾經支持的一些平臺(由於缺少用戶或開發人員)。檢查 PEP 11 了解所有不支持的平臺的詳細信息。
有關具有預編譯安裝程序平臺的詳細信息,請參閱 Python for Windows