Linux下 虛擬環境管理
virtualenv安裝
- 安裝
pip install virtualenv
- 查看是否安裝成功
virtualenv --version
- 查看幫助
virtualenv --help
virtualenv 使用
-
創建一個測試用的虛擬環境
virtualenv my_test_env -p python3
-p 用來指定python版本 如果python添加了軟連接可以像我一樣指定,如果沒有添加軟連接,可以直接定位到python執行文件 /usr/local/python3/bin/python
如果創建虛擬環境時不選擇指定的python版本, 那麼虛擬環境創建後默認就是系統默認的python版本. -
激活虛擬環境
cd my_test_env source ./bin/activate
-
查看虛擬環境python版本,pip版本
python -v pip -v
-
退出虛擬環境
deactivate
-
刪除虛擬環境 只需要刪除my_test_env 目錄即可
如果沒有啓動虛擬環境,系統環境也安裝了pip工具,那麼packages將被安裝在系統環境
爲了避免發生此事,可以在~/.bashrc文件中加上
vim ~/.bashrc
export PIP_REQUIRE_VIRTUALENV=true
使配置生效 source ~/.bashrc
如果在沒開啓虛擬環境時, 在虛擬環境之外的系統上運行pip,就會提示錯誤:“Could not find an activated virtualenv (required)”.
virtualenv 用法小總結
-
創建環境
virtualenv [新環境名] :這會再當前目錄下創建一個新環境目錄
可使用 virtualenv --help 來查看如何使用。可以使用參數 --python=/usr/bin/python3 來創建一個已經安裝的的Python環境。 -
使用環境
切換到項目的新環境目錄
執行:source ./bin/activate 來激活環境,激活後在命令行的前面會出現新環境名稱
接下來可使用pip命令安裝新環境需要的各種包。(pip命令在創建新環境時自帶) -
退出虛擬環境
deactivate
如果要刪除虛擬環境,只需退出虛擬環境後,刪除對應的虛擬環境目錄即可。不影響其他環境。 -
注意事項
如果沒有啓動虛擬環境,系統也安裝了pip工具,那麼套件將被安裝在系統環境中,爲了避免發生此事,可以在~/.bashrc文件中加上:export PIP_REQUIRE_VIRTUALENV=true
或者讓在執行pip的時候讓系統自動開啓虛擬環境:export PIP_REQUIRE_VIRTUALENV=true -
保證環境一致性
用pip freeze查看當前安裝版本
pip freeze
另外:
pip freeze > requirements.txt
這將會創建一個 requirements.txt 文件,其中包含了當前環境中所有包及 各自的版本的簡單列表。
可以使用 "pip list"在不產生requirements文件的情況下, 查看已安裝包的列表。
這將會使另一個不同的開發者(或者是你本人,如果你本人需要重新創建這樣的環境) 在以後安裝相同版本的相同包變得容易。
將這個requirements.txt拷貝到新的機器環境下執行:
#pip install -r requirements.txt
這能幫助確保安裝、部署和開發者之間的一致性。
虛擬環境管理工具 - Virtualenvwrapper
virtualenv使用起來不是很方便,因爲virtual的啓動、停止腳本都在特定目錄,可能一段時間後,你可能會有很多個虛擬環境散落在系統各處,你可能忘記它們的名字或者位置。鑑於virtualenv不便於對虛擬環境集中管理,所以推薦直接使用virtualenvwrapper。
virtualenvwrapper提供了一系列命令使得和虛擬環境工作變得便利。它把你所有的虛擬環境都放在一個地方。
Virtaulenvwrapper是virtualenv的擴展包,用於更方便管理虛擬環境,它可以做:
- 將所有虛擬環境整合在一個目錄下;
- 管理(新增,刪除,複製)虛擬環境;
- 切換虛擬環境等等.
-
安裝virtualenvwrapper (確保virtualenv已提前安裝)
pip install virtualenvwrapper
-
設置環境變量
export WORKON_HOME=~/Envs
-
創建虛擬環境管理目錄. 即創建的虛擬環境都會放到上面設置的~/Envs目錄下面
mkdir -p $WORKON_HOME
-
在~/.bashrc文件裏配置環境變量, 添加下面兩行
vim ~/.bashrc export WORKON_HOME=~/Envs source /usr/bin/virtualenvwrapper.sh
-
使得以上環境變量的配置生效
source ~/.bashrc
-
現在開始使用Virtualenvwrapper 管理虛擬機
(可以刪除上面之前創建的虛擬環境 my_test_env 了, 後續都將使用Virtualenvwrapper創建和管理虛擬環境)-
使用mkvirtualenv 命令創建虛擬環境
mkvirtualenv my_test_env_new --python python3
mkvirtualenv project_hui --python=/usr/local/python3/bin/python3.6.1
-
deactivate
退出虛擬環境 -
使用
lsvirtualenv
查看所有虛擬環境 -
使用
workon
切換虛擬環境 -
刪除虛擬環境
rmvirtualenv my_test_env_new
-
使用
lssitepackages
命令顯示 虛擬環境的 site-packages 目錄中的內容。 -
使用
cdvirtualenv
命令導航到當前激活的虛擬環境的目錄中,比如說這樣就能夠瀏覽它的site-packages。 -
使用
cdsitepackages
命令直接進入到 site-packages 目錄中, 和上面的cdvirtualenv 類似
爲了方便運維管理, 可以進行一些別名設置, 如下:
vim ~/.bashrc
#virtualenv
alias vte=‘virtualenv’
alias mkvte=‘mkvirtualenv’
alias deact=‘deactivate’
alias rmvte=‘rmvirtualenv’
alias lsvte=‘lsvirtualenv’
alias won=‘workon’
使得上面配置生效 source ~/.bashrc
使用別名進行操作 lsvte -
virtualenv使用時遇到的一個坑點, 經常排查驗證, 得出結論如下:
-
root用戶和普通用戶都可以創建虛擬環境(比如虛擬環境名稱爲venv),venv虛擬環境的相關文件和文件夾的owner都是該用戶,
如果是非root的其他用戶激活該venv虛擬環境的話,會因爲文件權限的問題導致python庫安裝失敗!!
所以說: 非root用戶不要去激活使用其他用戶創建的venv虛擬環境! -
一旦以用戶A的身份激活venv虛擬環境後,在虛擬環境中就不能再通過su命令切換其他用戶,否則會自動退出虛擬環境!
所以說: 在虛擬環境中不要通過su切換用戶! -
以用戶A的身份激活某venv虛擬環境後,在虛擬環境中所有通過"sudo + cmd"執行的命令,都等同於在虛擬環境外執行。
所以說: 在虛擬環境中不要通過sudo執行命令
win10環境下搭建virtualenvwrapper-win
pip install virtualenv
pip install virtualenvwrapper-win
- 設置系統環境變量
WORKON_HOME= '設置你想統一管理虛擬環境的路徑'
- 創建虛擬環境
mkvirtualenv test
( 此環境在你剛纔配置的環境變量路徑下) - 創建指定python版本的虛擬環境 mkvirtualenv -p python3 test
- 查看所有虛擬環境
workon
- 進入虛擬環境
workon xxx
- 退出虛擬環境
deactivate
- 刪除虛擬環境
mvirtualenv test
(虛擬環境名稱) - 查看虛擬環境下的安裝包
pip list
生成項目所需要的的第三方包依賴文件
pip freeze >requirements.txt
安裝
pip install -r requirements.txt