Virtual Environments and Packages
1.介紹
python常常使用非標准庫中的模塊。在開發Python應用程序的時候,系統安裝的Python3只有一個版本:python3.7。所有第三方的包都會被pip
安裝到Python3的site-packages
目錄下。
當一個工具需要適應一個特殊版本的三方庫,另一個腳本則需要另外的版本。
解決方法是創建Python虛擬目錄環境,不同的應用可以使用不同的Python虛擬環境,不同應用程序的虛擬環境互不沖突,互不干擾。
2.創建虛擬環境
管理虛擬機環境的工具是叫做venv
,電腦中新版本的Python都包含ven
工具。
-
創建虛擬環境,你需要選擇你放置的目錄。然后運行
python3 -m venv tutorial-env
它將創建tutorial-env目錄,包含Python解釋器和一些模塊文件以及各種支持文件。一個常見目錄是
.env
-
一旦創建后,需要激活它
source tutorial-env/bin/activate # MACOS tutorial-env\Scripts\activate.bat #WINDOWS
激活虛擬環境提示你的使用的虛擬環境,並修改環境以便於你運行特定版本的Python。
-
使用pip管理你的模塊。
可以使用pip更新、移出模塊。https://docs.python.org/3/installing/index.html#basic-usage
python -m pip install requests==2.6.0 安裝特定版本
python -m pip install --upgrade requests 升級reqeusts模塊
pip show requests
pip freeze
pip uninstall
3. 總結
使用廖雪峰python3.4教程。實測發現macOS的python3.7不適用。
pip3 install virtualenv
Mac:~ michael$ mkdir myproject
Mac:~ michael$ cd myproject/
Mac:myproject michael$
Mac:myproject michael$ virtualenv --no-site-packages venv
命令virtualenv
就可以創建一個獨立的Python運行環境,我們還加上了參數--no-site-packages
,這樣,已經安裝到系統Python環境中的所有第三方包都不會復制過來,這樣,我們就得到了一個不帶任何第三方包的“干凈”的Python運行環境。
新建的Python環境被放到當前目錄下的venv
目錄。有了venv
這個Python環境,可以用source
進入該環境:
Mac:myproject michael$ source venv/bin/activate
(venv)Mac:myproject michael$
在venv
環境下,用pip
安裝的包都被安裝到venv
這個環境下,系統Python環境不受任何影響。也就是說,venv
環境是專門針對myproject
這個應用創建的。
退出當前的venv
環境,使用deactivate
命令:
(venv)Mac:myproject michael$ deactivate
Mac:myproject michael$
此時就回到了正常的環境,現在pip
或python
均是在系統Python環境下執行。
完全可以針對每個應用創建獨立的Python運行環境,這樣就可以對每個應用的Python環境進行隔離。
virtualenv是如何創建“獨立”的Python運行環境的呢?原理很簡單,就是把系統Python復制一份到virtualenv的環境,用命令source venv/bin/activate
進入一個virtualenv環境時,virtualenv會修改相關環境變量,讓命令python
和pip
均指向當前的virtualenv環境。