Python基礎知識——Windows上使用python


與大多數Unix系統和服務不同,Windows不需要Python本地,因此不預安裝一個版本的Python。但是,CPython團隊已經為每個版本編譯Windows安裝程序(MSI軟件包)多年。

隨着Python的不斷發展,一些以前被支持的平台不再受支持(由於缺乏用戶或開發人員)。檢查PEP 11有關所有不受支持的平台的詳細信息。

有關 具有預編譯安裝程序的平台的詳細信息,請參閱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特定的支持模塊的集合。這包括以下工具:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM