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

來源:互聯網
上載者:User

標籤:pch   releases   完整   函數   stat   als   local   visual   位元組   

與大多數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.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 syssys.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 = 3python3 = 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.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分發中。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.