一壁公、virtualenv 虛擬環(huán)境安裝
?? virtualenv 工具可以用來在 Linux 操作系統(tǒng)中創(chuàng)建一個(gè)虛擬的Python環(huán)境。這個(gè)環(huán)境是獨(dú)立的绅项、隔離的紊册,擁有自己的環(huán)境安裝目錄(而不是把所有的第三方包等都安裝在 /usr/lib/python3.4/site-packages 目錄(Python3.4的默認(rèn)Linux安裝目錄)下)。
?? 它可以用來解決Python項(xiàng)目開發(fā)和運(yùn)行過程中的依賴項(xiàng)和版本問題快耿,而不必和其他項(xiàng)目的Python環(huán)境以及全局的Python環(huán)境發(fā)生沖突囊陡。
1、安裝 virtualenv
建議使用 pip
工具安裝 virtualenv 包:
$ pip install virtualenv
2掀亥、創(chuàng)建虛擬環(huán)境
安裝完成后撞反,可以使用 virtualenv
命令創(chuàng)建放置虛擬環(huán)境的目錄:
$ virtualenv [OPTIONS] [虛擬環(huán)境名稱]
創(chuàng)建原理:
?? 在目錄 ENV 里會初始化虛擬環(huán)境的相關(guān)目錄和文件,包括 Python 語言本身的環(huán)境以及 pip 等相關(guān)程序都會在這個(gè)目錄里創(chuàng)建(拷貝)一份新的搪花。
ENV/lib
和 ENV/include
目錄中包含了虛擬環(huán)境ENV使用的庫文件痢畜。在虛擬環(huán)境中安裝的第三方包會安裝在 ENV/lib/python3.4/site-packages
目錄下垛膝。
ENV/bin
目錄里面放置了可執(zhí)行文件鳍侣,在里面有新安裝的Python 包中的可執(zhí)行程序丁稀,包括pip等相關(guān)工具。
OPTIONS:
--no-site-packages 參數(shù):
?? 默認(rèn)情況下倚聚,虛擬環(huán)境會依賴系統(tǒng)環(huán)境中的 sit package线衫,就是說系統(tǒng)中已經(jīng)安裝好的第三方 package 也會安裝在虛擬環(huán)境中,如果不想依賴這些 package惑折,那么可以加上 --no-site-packages
參數(shù)建立虛擬環(huán)境授账。
$ virtualenv --no-site-packages [虛擬環(huán)境名稱]
--system-site-packages 參數(shù):
?? 如果你使用 --system-site-packages
參數(shù)創(chuàng)建虛擬環(huán)境,你創(chuàng)建的虛擬環(huán)境會繼承 /usr/local/python34/lib/python3.4/site-packages 惨驶。
$ virtualenv --system-site-packages ENV
--extra-search-dir 參數(shù):
?? 如果你使用 --extra-search-dir
參數(shù)創(chuàng)建虛擬環(huán)境白热,這允許你提供自己的 setuptools 版本,而不是使用虛擬環(huán)境中嵌入的版本粗卜。
$ virtualenv --extra-search-dir=/path/to/distributions ENV
/path/to/distributions 參數(shù):
?? 指定一個(gè)包含 setuptools 以及 pip屋确、wheels 等的目錄。virtualenv 命令會在指定的目錄中续扔,尋找 wheels攻臀,但是會使用 pip 的標(biāo)準(zhǔn)的算法來選擇安裝的 wheel。
除了指定的目錄纱昧,搜索順序還包含:
1刨啸、相對于virtualenv.py 的 virtualenv_support 目錄;
2识脆、virtualenv.py 所在的目錄设联;
3、當(dāng)前目錄灼捂;
--version 顯示軟件的版本號:
# virtualenv --version
-h, --help 顯示幫助信息:
# virtualenv -h
-p PYTHON_EXE, --python=PYTHON_EXE 指定生成的虛擬環(huán)境使用的Python解釋器:
?? 默認(rèn)的使用的是安裝 virtualenv 的 Python 解釋器
# virtualenv -p /usr/bin/python2.6 ENV
--no-setuptools 在新建的虛擬環(huán)境中不安裝工具包:
# virtualenv --no-setuptools ENV
--no-pip 在新建的虛擬環(huán)境中不安裝pip:
# virtualenv --no-pip ENV
--no-wheel 在新建的虛擬環(huán)境中不安裝 wheel:
# virtualenv --no-wheel ENV
--extra-search-dir=DIR 指定安裝新的虛擬環(huán)境時(shí)尋找工具包离例、pip等的目錄路徑,這個(gè)參數(shù)可以用來多次指定:
# virtualenv --extra-search-dir=/usr/local/python34/bin/ ENV
--prompt=PROMPT 可以為創(chuàng)建的虛擬環(huán)境指定提示前綴:
# virtualenv --prompt="測試" test
3纵东、啟動環(huán)境
在新創(chuàng)建的虛擬環(huán)境目錄中粘招,有一個(gè)啟動腳本 ENV/bin/activate
,直接使用 source
命令來啟動我們新創(chuàng)建的虛擬環(huán)境偎球。
$ source ENV/bin/activate
?? 這條命令修改了當(dāng)前用戶的環(huán)境變量 $PATH
洒扎,將我們新建的虛擬環(huán)境目錄 ENV/bin/
作為第一個(gè)元素添加到了 $PATH 中。因?yàn)樵贚inux系統(tǒng)中輸入命令時(shí)衰絮,命令可執(zhí)行文件的搜索路徑是根據(jù) $PATH 中配置的路徑的先后順序來的袍冷,所以接下來你執(zhí)行的所有命令都將是 ENV/bin/
中的命令(如果此目錄中存在這個(gè)命令的話),新安裝的模塊都只會安裝到該目錄(ENV)中去猫牡。
active 腳本也會修改當(dāng)前用戶的命令行顯示胡诗,在頭部會顯示出當(dāng)前使用的虛擬環(huán)境。
4、退出和刪除環(huán)境
如果要退出當(dāng)前虛擬環(huán)境煌恢,使用 deactivate
命令:
$ deactivate
如果需要?jiǎng)h除我們創(chuàng)建的虛擬環(huán)境骇陈,只需要退出,并刪除創(chuàng)建的文件夾即可:
$ deactivate
$ rm -r /path/to/ENV
二瑰抵、安裝 virtualenvwrapper 擴(kuò)展包
Virtaulenvwrapper 是 virtualenv 的擴(kuò)展包你雌,可以把新創(chuàng)建的環(huán)境記錄下來,不需要每次啟動虛擬環(huán)境時(shí)都執(zhí)行一遍 source 命令二汛,可以更方便的管理虛擬環(huán)境婿崭。
它可以實(shí)現(xiàn):
1、將所有虛擬環(huán)境整合在一個(gè)目錄下
2肴颊、管理(新增氓栈,刪除,復(fù)制)虛擬環(huán)境
3婿着、快速切換虛擬環(huán)境
1授瘦、安裝 virtualenvwrapper :
1.1 建議適用 pip 安裝:
$ pip install virtualenvwrapper
1.2 進(jìn)入 用戶主目錄,打開 .bashrc 文件祟身,添加如下代碼:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
WORKON_HOME:
?? 告訴 virtualenvwrapper 在哪里放置你的虛擬環(huán)境奥务,默認(rèn)是在 $HOME/.virtualenvs
目錄下。如果這個(gè)目錄不存在袜硫,virtualenvwrapper 運(yùn)行的時(shí)候會自動創(chuàng)建它氯葬。
PROJECT_HOME :
?? 告訴virtualenvwrapper在哪里存放你的項(xiàng)目的工作目錄。
1.3 然后執(zhí)行 source 命令婉陷,使剛添加的代碼生效:
$ source .bashrc
2帚称、使用 virtualenvwrapper
虛擬環(huán)境相關(guān)操作:
workon: 列出虛擬環(huán)境列表
mkvirtualenv [虛擬環(huán)境名稱]: 新建虛擬環(huán)境
workon [虛擬環(huán)境名稱]: 切換虛擬環(huán)境
rmvirtualenv [虛擬環(huán)境名稱]: 刪除虛擬環(huán)境
deactivate: 離開虛擬環(huán)境
2.1 使用 workon 命令,列出可以使用的虛擬環(huán)境:
$ workon
2.2 使用 mkvirtualenv 命令秽澳,創(chuàng)建新的虛擬環(huán)境:
mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME
除了-a , -i, -r, -h 所有的命令中的選項(xiàng)都會直接傳遞給virtualenv闯睹,新的虛擬環(huán)境在初始化后會自動激活(也就是進(jìn)入該虛擬環(huán)境)。
$ mkvirtualenv ENV
-a 選項(xiàng):可以將一個(gè)現(xiàn)有的項(xiàng)目關(guān)聯(lián)到新建的虛擬環(huán)境
$ mkvirtualenv -a phone/ phone
-i 選項(xiàng):可以在虛擬環(huán)境創(chuàng)建后安裝一個(gè)或多個(gè)包
-r選項(xiàng):可以指定一個(gè)列出了要安裝那些包的文件担神,這個(gè)參數(shù)相當(dāng)于pip 的 -r 參數(shù)楼吃。
2.3 使用 mktmpenv 命令自動生成一個(gè)唯一的名稱:
mktmpenv [(-c|--cd)|(-n|--no-cd)] [VIRTUALENV_OPTIONS]
$ mktmpenv
2.4 lsvirtualenv 命令詳細(xì)的列出我們創(chuàng)建的虛擬環(huán)境
$ lsvirtualenv
2.5 showvirtualenv 顯示某個(gè)虛擬環(huán)境的細(xì)節(jié)描述
$ showvirtualenv cms
2.6 rmvirtualenv 刪除 WORKON_HOME 里的一個(gè)虛擬環(huán)境
在你刪除虛擬環(huán)境之前,必須先離開這個(gè)虛擬環(huán)境妄讯。
$ rmvirtualenv ENVNAME
2.7 allvirtualenv 在WORKON_HOME里的所有虛擬環(huán)境中執(zhí)行一條命令:
allvirtualenv command with arguments
$ allvirtualenv pip install -U pip
2.8 workon 切換一個(gè)虛擬環(huán)境
$ workon environment_name
如果后面沒有給出虛擬環(huán)境的名稱孩锡,則會列出可以使用的虛擬環(huán)境
$ workon
2.9 deactivate 退出當(dāng)前使用的虛擬環(huán)境
$ deactivate