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

與大多數Unix系統和服務不一樣,Windows不須要Python本地,所以不預安裝一個版本的Python。可是,CPython團隊已經爲每一個版本編譯Windows安裝程序(MSI軟件包)多年。php

隨着Python的不斷髮展,一些之前被支持的平臺再也不受支持(因爲缺少用戶或開發人員)。檢查PEP 11有關全部不受支持的平臺的詳細信息。html

有關 具備預編譯安裝程序的平臺的詳細信息,請參閱Python for Windowspython

也能夠看看web

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。windows

1.2 配置的Python 

爲了無瑕疵地運行Python,您可能須要在Windows中更改某些環境設置。python2.7

1.2.1 附記:設置環境變量

Windows具備用於更改環境變量的內置對話框(如下指南適用於XP經典視圖):右鍵單擊計算機的圖標(一般位於桌面上並稱爲「個人計算機」),而後選擇 屬性。而後,打開高級選項卡,單擊環境變量按鈕。ide

總之,你的路徑是:函數

個人電腦‣屬性‣高級‣環境變量

在此對話框中,您能夠添加或修改用戶和系統變量。要更改系統變量,您須要對計算機進行非受限訪問(即管理員權限)。工具

將變量添加到環境的另外一種方法是使用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分發中。
相關文章
相關標籤/搜索