pcwu's TIL Notes


[Python] Virtualenv 簡介

Introduction

virtualenv 是一個程式,用來產生隔離且獨立的python以及套件執行環境。通常使用的場景為一個專案製作一個虛擬環境,如此一來就不會因為版本的問題而彼此影響。

virtualenv 的原理就是利用 Unix 的 source 指令來從檔案中讀取指令來執行,進而暫時改變抽換目前這個執行階段的 python 的環境。這也是每次登入都要重新 activate 的原因了。

virtualenv 會建立一個資料夾,並複製所需要程式進資料夾,如 pythonpip,接下來不管是執行 pythonpip 或接下來安裝的套件,全都是在這個資料夾獨立且隔離的。所以就不會再發生跟系統版本不合,或是權限不足不能自己安裝套件的問題了!

執行 virtualenv 前後比較:

# 執行前,程式位於 homebrew 建立的資料夾內
hasheesh@PCWU-MacBook-Pro ~ $ which python
/usr/local/bin/python
hasheesh@PCWU-MacBook-Pro ~ $ which pip
/usr/local/bin/pip

# 執行後,程式位置更改至所建的資料夾內
(ENV) hasheesh@PCWU-MacBook-Pro ~ $ which python
/Users/hasheesh/Projects/flask/ENV/bin/python
(ENV) hasheesh@PCWU-MacBook-Pro ~ $ which pip
/Users/hasheesh/Projects/flask/ENV/bin/pip

Usage

virtualenv 使用指令:

# Create new environment.
virtualenv ENV

# start using this environment
source bin/activate

# Leave
deactivate

從 github/gitignore 的 Python 檔案可以看得出來大家慣用的應該是:

# virtualenv
.venv
venv/
ENV/

目前我是暫時使用 ENV

Reference and Reading List