Mac配置Python開發(fā)環(huán)境之virtualenvwrapper

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,結果證明是不行的复亏。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趾娃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缔御,更是在濱河造成了極大的恐慌抬闷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耕突,死亡現(xiàn)場離奇詭異笤成,居然都是意外死亡,警方通過查閱死者的電腦和手機眷茁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門炕泳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人上祈,你說我怎么就攤上這事培遵。” “怎么了登刺?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵籽腕,是天一觀的道長。 經(jīng)常有香客問我纸俭,道長节仿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任掉蔬,我火速辦了婚禮廊宪,結果婚禮上矾瘾,老公的妹妹穿的比我還像新娘。我一直安慰自己箭启,他們只是感情好壕翩,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著傅寡,像睡著了一般放妈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荐操,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天芜抒,我揣著相機與錄音,去河邊找鬼托启。 笑死宅倒,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的屯耸。 我是一名探鬼主播拐迁,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疗绣!你這毒婦竟也來了线召?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤多矮,失蹤者是張志新(化名)和其女友劉穎缓淹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體塔逃,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡割卖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了患雏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹏溯。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖淹仑,靈堂內(nèi)的尸體忽然破棺而出丙挽,到底是詐尸還是另有隱情,我是刑警寧澤匀借,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布颜阐,位于F島的核電站,受9級特大地震影響吓肋,放射性物質(zhì)發(fā)生泄漏凳怨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肤舞。 院中可真熱鬧紫新,春花似錦、人聲如沸李剖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽篙顺。三九已至偶芍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間德玫,已是汗流浹背匪蟀。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宰僧,地道東北人材彪。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像撒桨,于是被迫代替她去往敵國和親查刻。 傳聞我的和親對象是個殘疾皇子键兜,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355