Virtual Environments
首先Python似乎沒有類似Maven/Ant這樣的專案管理工具。那麼當一台機器上有多個python項目,且這些python項目各自有不同的依賴,不想互相干擾時怎麼辦呢。
官方做法是使用Virtual Environments將每個項目互相隔離開。一般情況下,我們使用python解譯器運行python指令碼或module:
>python myScript.py
啟動並執行目錄就是安裝的python解譯器,即python.exe所在的目錄。而Virtual Environments就是給每個項目都產生一個項目專屬的目錄,這個目錄裡包含python解譯器,python標準類庫和其他各式各樣的必要檔案。這樣每個項目就可以使用不同的解譯器和類庫,且互不干擾。
建立過程也很簡單。首先找到pyvenv.py所在的目錄,這個檔案通常在安裝目錄的自目錄\Tools\scripts下。這是一個產生Virtual Environments的工具。然後運行:
>pyvenv tutorial-env
運行後就會產生一個名為“tutorial-env”的目錄。找到這個目錄,可以發現正如官網所說,這個目錄包含運行python項目所必須的一切檔案。使用在各自Virtual Environments目錄裡包含的解譯器來運行特定的python項目就可以了。同時,對於那些每個項目使用的特定的依賴(packages或module),則加入到各自Virtual Environments目錄的類庫子目錄中就可以了。這裡需要注意的是。建立完Virtual Environments後,還需要啟用。做法很簡單,在上例tutorial-env目錄下執行下的命令即可:
>tutorial-env/Scripts/activate
PIP
PIP是官方提供的安裝python第三方類庫(packages/module)的工具。它可以去PPI(python packages index)尋找或下載第三方類庫。網址是:https://pypi.python.org/pypi
找到上例Virtual Environments目錄下的pip.exe並運行:
>pip install lib_name
即可安裝,其他功能請自行查看手冊。如果是在python的安裝目錄下運行pip,則類庫可以被非Virtual Environments的所有項目使用。PIP安裝的其實是package。
Requirements.txt
在Virtual Environments目錄下運行:
>pip freeze > requirements.txt
可以生產一個當前項目所有依賴類庫及其版本的list檔案,檔案名稱就是requirements.txt(當然也可以用別的名字)。檔案內容大致如下:
novas==3.1.1.3
numpy==1.9.2
requests==2.7.0
使用requirements.txt的好處就是:
The requirements.txt can then be committed to version control and shipped as part of an application. Users can then install all the necessary packages with “install -r“:
>pip install -r requirements.txt
這樣就可以方便的管理項目依賴了。如果不使用requirements.txt,直接使用version control儲存Virtual Environments目錄,其他程式員直接下載該目錄就可以開始項目開發的做法也可以。