1蛀缝、virtualenvwrapper簡介
virtualenvwrapper,相較于使用virtualenv, 好處就是把所有環(huán)境都放在同一目錄下管理耘分,以便更好的管理及切換葱弟。
2壹店、安裝virtualenvwrapper
使用如下命令進行安裝
$ pip install virtualenvwrapper
有的博文使用了sudo命令,此時的安裝命令變?yōu)?/p>
$ sudo pip install virtualenvwrapper
按下回車鍵后芝加,需要輸入用戶密碼才能安裝茫打。
3、配置virtualenvwrapper
首先創(chuàng)建兩個文件夾妖混,一個用來存放虛擬環(huán)境(.virtualenvs)老赤,另一個是工作空間(workspace)
$ mkdir $HOME/.virtualenvs
$ mkdir $HOME/workspace
需要說明的是,文件夾的名稱自己可以隨意更改制市,相應的代碼就要進行更改抬旺。
然后在shell配置文件中添加如下幾行代碼(我使用的是zsh,所以在~/.zshrc中添加)
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
然后在當前終端(shell)中執(zhí)行如下命令讓更改之后的終端配置生效
$ source ~/.zshrc
如果成功則會出現(xiàn)類似如下信息
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/postmkproject
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/initialize
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/premkvirtualenv
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/postmkvirtualenv
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/prermvirtualenv
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/postrmvirtualenv
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/predeactivate
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/postdeactivate
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/postactivate
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/get_env_details
如果遇到如下錯誤
/Users/wangkaiju/.pyenv/versions/3.7.0/bin/python: Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/Users/wangkaiju/.pyenv/shims/python and that PATH is
set properly.
解決方案:
首先在終端執(zhí)行命令查看python的版本祥楣,后面要用到
$ python -V
其次要更改/usr/local/bin/virtual/virtualenvwrapper.sh开财,找到下面的代碼位置
# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] then
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi
若終端查看得到的python版本是python3汉柒,則將
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
這行命令更改為
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
如果終端查看得到的python版本是python2,則更改為
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2
說明:按照正常的安裝步驟來講责鳍,是不會出錯的碾褂,出現(xiàn)這種錯誤是由于安裝virtualenvwrapper是python3環(huán)境,而系統(tǒng)采用的是python2历葛,反之亦然正塌,也就是安裝virtualenvwrapper的python環(huán)境和系統(tǒng)python環(huán)境不一致,此時我們手動將兩者改為一致則問題解決恤溶。
參考: virtualenvwrapper配置報錯
說明:本來按照上面的辦法解決了我的問題乓诽,后來用mkvirtualenv命令創(chuàng)建了新的虛擬環(huán)境后,再打開了一個終端又報前面提到的錯誤咒程,再找了一個解決方案鸠天,如下:
在~/.zshrc文件的最下方加入下面語句
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
fi
“加粗”的部分路徑設置為python3(當py2和py3共存的時候),問題解決帐姻。需要注意的是稠集,要根據(jù)自己的系統(tǒng)找到系統(tǒng)安裝好的python3的路徑,我的Mac是/usr/local/bin/python3饥瓷,別的linux系統(tǒng)可能是/usr/bin/python3巍杈,相應的粗體部分python3的路徑要作修改。
參考:pip安裝virtualenvwrapper報錯的解決辦法
4扛伍、virtualenvwrapper的使用
4.1 創(chuàng)建虛擬環(huán)境
$ mkvirtualenv py37_test
其中py37_test是我創(chuàng)建的虛擬環(huán)境的名字筷畦,可以自行更改,而且創(chuàng)建完成后自動進入創(chuàng)建好的虛擬環(huán)境刺洒。mkvirtualenv也可以創(chuàng)建指定python版本的虛擬環(huán)境鳖宾,此時要用到-p參數(shù)指出python的路徑:
$ mkvirtualenv -p /usr/local/bin/python3 py37_test
4.2 查看創(chuàng)建的虛擬環(huán)境
$ lsvirtualenv
# 或者
$ workon
4.3 啟動某虛擬環(huán)境
命令格式 workon VIRTUALENV_NAME
其中VIRTUALENV_NAME是虛擬環(huán)境的名稱
為了查看效果,重新打開一個終端逆航,再創(chuàng)建一個新的虛擬環(huán)境py27_test
$ mkvirtualenv py27_test
會出現(xiàn)如下的提示
Using base prefix '/Users/wangkaiju/.pyenv/versions/3.7.0'
New python executable in /Users/wangkaiju/.virtualenvs/py27_test/bin/python3.7
Not overwriting existing python script /Users/wangkaiju/.virtualenvs/py27_test/bin/python (you must use /Users/wangkaiju/.virtualenvs/py27_test/bin/python3.7)
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/py27_test/bin/predeactivate
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/py27_test/bin/postdeactivate
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/py27_test/bin/preactivate
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/py27_test/bin/postactivate
virtualenvwrapper.user_scripts creating /Users/wangkaiju/.virtualenvs/py27_test/bin/get_env_details
此時終端命令提示符前面會多了(py27_test)鼎文,類似于
(py27_test) ╭──wangkaiju@wangkaijudeMBP
在該界面下使用命令 workon,則會顯示出如下類容
py27_test
py37_test
也就是將創(chuàng)建好的兩個虛擬環(huán)境都列舉了出來因俐,此時處于py27_test環(huán)境拇惋,要切換到py37_test環(huán)境,則執(zhí)行命令
workon py37_test
4.4 刪除虛擬環(huán)境
rmvirtualenv 【虛擬環(huán)境的名字】
$ rmvirtualenv py37_test
需要說明的是抹剩,無法在虛擬環(huán)境中刪除虛擬環(huán)境撑帖,要先退出虛擬環(huán)境才行。
4.5 退出虛擬環(huán)境 deactivate
在虛擬環(huán)境中使用deactivate則退出了虛擬環(huán)境澳眷,只有就可以刪除虛擬環(huán)境了胡嘿。
deactivate
注意:pyenv virtualenv命令和mkvirtualenv命令創(chuàng)建的虛擬環(huán)境是無法互相使用的,也就是說pyenv virtualenv命令創(chuàng)建的虛擬環(huán)境無法被workon命令識別钳踊,同樣的mkvirtualenv命令創(chuàng)建的虛擬環(huán)境也無法被pyenv versions等命令識別
5衷敌、總結
virtualenvwrapper這個插件很怪勿侯,Mac電腦直接使用如下命令安裝virtualenvwrapper時并不能成功,會提示找不到缴罗,找到了一個名叫pyenv-virtualenvwrapper的類似的包助琐,然后我就安裝了pyenv-virtualenvwrapper這個包,然后在進行后續(xù)配置時出錯面氓,錯誤提示見第3節(jié)錯誤提示兵钮。
$ brew install virtualenvwrapper
后來才發(fā)現(xiàn)virtualenvwrapper和pyenv-virtualenvwrapper應該是兩個不同的東西,之所以這里我會出錯侧但,是因為前面在安裝virtualenv時,我是用brew install
命令安裝的航罗,同樣提示找不到virtualenv禀横,但是有一個類似的包pyenv-virtualenv,然后我用brew install
命令安裝了pyenv-virtualenv粥血,并且好用柏锄,所以此處我也想用同樣的方式安裝virtualenvwrapper,結果證明是不行的复亏。