Python之 Virtualenv簡明教程

張衝andy發表於2019-02-15

virtualenv 透過建立獨立Python開發環境的工具, 來解決依賴、版本以及間接許可權
問題. 比如一個專案依賴Django1.3 而當前全域性開發環境為Django1.7, 版本跨度過大, 導致不相容使專案無法正在執行, 使用virtualenv可以解決這些問題.

virtualenv 建立一個擁有自己安裝目錄的環境, 這個環境不與其他虛擬環境共享庫, 能夠方便的管理python版本和管理python庫

1. 安裝Virtualenv


使用 pip 安裝Virtualenv, 使用過python的都應該知道 pip 包管理神器吧, 即使不知道, 網站也有大把的教程, 不過推薦檢視

$ pip install virtualenv//或者由於許可權問題使用sudo臨時提升許可權
$ sudo pip install virtualenv

2. virtualenv基本使用


現在開始使用virtualenv管理python環境

➜  Test git:(master) ✗ virtualenv ENV  #建立一個名為ENV的目錄, 並且安裝了ENV/bin/python, 建立了lib,include,bin目錄,安裝了pip
New python executable in 
Installing setuptools, pip...done.
➜  Test git:(master) ✗ cd ENV
➜  ENV git:(master) ✗ ll
drwxr-xr-x  14 andrew_liu  staff  476 12  8 08:49 bin
drwxr-xr-x   3 andrew_liu  staff  102 12  8 08:49 include
drwxr-xr-x   3 andrew_liu  staff  102 12  8 08:49 lib
  • lib ,所有安裝的python庫都會放在這個目錄中的 lib/pythonx.x/site-packages/
  • bin , bin/python 是在當前環境是使用的python直譯器

如果在命令列中執行 virtualenv --system-site-packages ENV , 會繼承 /usr/lib/python2.7/site-packages 下的所有庫, 最新版本virtualenv把把訪問全域性 site-packages 作為預設行為
default behavior.

2.1. 啟用virtualenv

#ENV目錄下使用如下命令
➜  ENV git:(master) ✗ source ./bin/activate  #啟用當前virtualenv
(ENV)➜  ENV git:(master) ✗ #注意終端發生了變化
#使用pip檢視當前庫
(ENV)➜  ENV git:(master) ✗ pip listpip (1.5.6)setuptools (3.6)wsgiref (0.1.2) #發現在只有這三個pip freeze  #顯示所有依賴pip freeze > requirement.txt  #生成requirement.txt檔案pip install -r requirement.txt  #根據requirement.txt生成相同的環境

2.2. 關閉virtualenv

使用下面命令

$ deactivate

2.3. 指定python版本

可以使用 -p PYTHON_EXE 選項在建立虛擬環境的時候指定python版本

#建立python2.7虛擬環境
➜  Test git:(master) ✗ virtualenv -p /usr/bin/python2.7 ENV2.7
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in ENV2.7/bin/python
Installing setuptools, pip...done.
#建立python3.4虛擬環境
➜  Test git:(master) ✗ virtualenv -p /usr/local/bin/python3.4 ENV3.4
Running virtualenv with interpreter /usr/local/bin/python3.4
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4'
New python executable in ENV3.4/bin/python3.4
Also creating executable in ENV3.4/bin/python
Installing setuptools, pip...done.

到此已經可以解決python版本衝突問題和python庫不同版本的問題

3. 其他


3.1. 生成可打包環境

某些特殊需求下,可能沒有網路, 我們期望直接打包一個ENV, 可以解壓後直接使用, 這時候可以使用 virtualenv -relocatable 指令將ENV修改為可更改位置的ENV

#對當前已經建立的虛擬環境更改為可遷移
➜  ENV3.4 git:(master) ✗ virtualenv --relocatable ./
Making script ./bin/easy_install relative
Making script ./bin/easy_install-3.4 relative
Making script ./bin/pip relative
Making script ./bin/pip3 relative
Making script ./bin/pip3.4 relative

3.2. 獲得幫助

$ virtualenv -h

當前的ENV都被修改為相對路徑, 可以打包當前目錄, 上傳到其他位置使用

這並不能使虛擬環境跨平臺使用

4. 參考連結


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2636118/,如需轉載,請註明出處,否則將追究法律責任。

相關文章