1.virtualenv介紹
在python開(kāi)發(fā)中在抛,我們可能會(huì)遇到一種情況满着,就是當(dāng)前的項(xiàng)目依賴的是某一個(gè)版本蟹地,但是另一個(gè)項(xiàng)目依賴的是另一個(gè)版本,這樣就會(huì)造成依賴沖突或悲,而virtualenv就是解決這種情況的孙咪,virtualenv通過(guò)創(chuàng)建一個(gè)虛擬化的python運(yùn)行環(huán)境,將我們所需的依賴安裝進(jìn)去的巡语,不同項(xiàng)目之間相互不干擾翎蹈,如下所示。
2男公、安裝virtualenv
若要使用python虛擬環(huán)境進(jìn)行開(kāi)發(fā)荤堪,首先需要安裝virtualenv。
命令:pip install virtualenv
3理澎、創(chuàng)建虛擬環(huán)境
命令:virtualenv venv
如果要?jiǎng)?chuàng)建python2的環(huán)境的話逞力,命令為
virtualenv -p /usr/bin/python2.7 env2.7
如果要?jiǎng)?chuàng)建python3的環(huán)境話,命令為
virtualenv -p /usr/bin/python3.5 env3.5
windows如下:
virtualenv -p C:\Users\WJ\AppData\Local\Programs\Python\Python36\python.exe env3.6
如果要?jiǎng)?chuàng)建一個(gè)不帶已經(jīng)安裝到系統(tǒng)的中第三方包的環(huán)境糠爬,可以加上參數(shù) --no-site-packages寇荧,這樣就可以得到一個(gè)不帶任何第三方包的干凈的python運(yùn)行環(huán)境
命令為
virtualenv --no-site-packages myenv
4、激活虛擬環(huán)境
命令:venv\scripts\activate
注:如無(wú)法激活执隧,直接進(jìn)入到activate所在目錄揩抡,使用.\activate激活
5、查看所有虛擬環(huán)境和啟動(dòng)虛擬環(huán)境
lsvirtualenv
workon
workon env
6镀琉、退出虛擬環(huán)境
deactivate
將指定路徑添加到sitepackages目錄下的virtualenv_path_extensions.pth中可以直接進(jìn)行import峦嗤,在啟動(dòng)虛擬環(huán)境時(shí)則添加到虛擬環(huán)境中,在未啟動(dòng)則添加到默認(rèn)python環(huán)境中
add2virtualenv path
7屋摔、其他命令
cdproject: 切換目錄到當(dāng)前指定的project目錄下, 使用前需要使用setprojectdir進(jìn)行設(shè)置
cdvirtualenv: 切換到當(dāng)前虛擬環(huán)境目錄下
cdsitepackages: 切換到當(dāng)前虛擬環(huán)境的sitepackages下
lssitepackages: 查看當(dāng)前虛擬環(huán)境的sitepackages目錄下的包
setprojectdir path: 設(shè)置project目錄
toggleglobalsitepackages:?jiǎn)⒂?關(guān)閉系統(tǒng)sitepackages
whereis file:查看文件路徑
$ virtualenv [OPTIONS] DEST_DIR
選項(xiàng):
–version 顯示當(dāng)前版本號(hào)烁设。
-h, –help 顯示幫助信息。
-v, –verbose 顯示詳細(xì)信息钓试。
-q, –quiet 不顯示詳細(xì)信息装黑。
-p PYTHON_EXE, –python=PYTHON_EXE 指定所用的python解析器的版本副瀑,比如 –python=python2.5 就使用2.5版本的解析器創(chuàng)建新的隔離環(huán)境。 默認(rèn)使用的是當(dāng)前系統(tǒng)安裝(/usr/bin/python)的python解析器
–clear 清空非root用戶的安裝恋谭,并重頭開(kāi)始創(chuàng)建隔離環(huán)境糠睡。
–no-site-packages 令隔離環(huán)境不能訪問(wèn)系統(tǒng)全局的site-packages目錄。
–system-site-packages 令隔離環(huán)境可以訪問(wèn)系統(tǒng)全局的site-packages目錄疚颊。
–unzip-setuptools 安裝時(shí)解壓Setuptools或Distribute
–relocatable 重定位某個(gè)已存在的隔離環(huán)境狈孔。使用該選項(xiàng)將修正腳本并令所有.pth文件使用相當(dāng)路徑。
–distribute 使用Distribute代替Setuptools材义,也可設(shè)置環(huán)境變量VIRTUALENV_DISTRIBUTE達(dá)到同樣效要均抽。
–extra-search-dir=SEARCH_DIRS 用于查找setuptools/distribute/pip發(fā)布包的目錄∧附兀可以添加任意數(shù)量的–extra-search-dir路徑到忽。
–never-download 禁止從網(wǎng)上下載任何數(shù)據(jù)橄教。此時(shí)清寇,如果在本地搜索發(fā)布包失敗,virtualenv就會(huì)報(bào)錯(cuò)护蝶。
–prompt==PROMPT 定義隔離環(huán)境的命令行前綴华烟。
8、Win10下提示權(quán)限錯(cuò)誤
錯(cuò)誤信息:
.\activate : 無(wú)法加載文件 H:\envproject\venv\Scripts\activate.ps1持灰,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本盔夜。有關(guān)詳細(xì)信息,請(qǐng)參閱 htt
ps:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies堤魁。
所在位置 行:1 字符: 1
解決辦法:
1.以管理員身份打開(kāi)PowerShell
2.執(zhí)行命令set-executionpolicy remotesigned
9喂链、使用pycharm創(chuàng)建虛擬化環(huán)境
來(lái)作為本示例的編輯器,選擇python2.7工作環(huán)境妥泉,新建工程virtualenvDemo,在控制臺(tái)中輸入命令:
virtualenv venv
這時(shí)候便會(huì)在當(dāng)前的項(xiàng)目中創(chuàng)建venv文件夾椭微,為當(dāng)前項(xiàng)目的虛擬python運(yùn)行環(huán)境,如下:
本機(jī)此時(shí)默認(rèn)的python環(huán)境為python2.7盲链,那么此時(shí)創(chuàng)建的虛擬環(huán)境就是以python2.7創(chuàng)建的虛擬化環(huán)境蝇率,如果需要選擇一個(gè)python解釋器來(lái)創(chuàng)建虛擬化環(huán)境,命令則為:
virtualenv -p /usr/bin/python2.7 venv
此時(shí)還需將當(dāng)前工程的interpreter改為當(dāng)前的虛擬環(huán)境刽沾,要不然會(huì)不起作用本慕,這個(gè)不再詳述。
啟用
激活虛擬化環(huán)境的命令為:
source venv/bin/activate
激活后侧漓,在控制臺(tái)會(huì)有一個(gè)帶有(venv)的標(biāo)志锅尘。
安裝依賴
在以上完成之后就可以通過(guò)命令pip install 來(lái)安裝python包了,這里安裝python包就不需要root權(quán)限了布蔗,直接就可以安裝十分方便藤违。在venv的環(huán)境中忙菠,使用pip安裝的包都不會(huì)再是全局性的包,只會(huì)在當(dāng)前的虛擬環(huán)境中起作用纺弊,避免了污染系統(tǒng)環(huán)境牛欢。
退出當(dāng)前系統(tǒng)環(huán)境
在控制臺(tái)中輸入命令deactivate后,就會(huì)推出當(dāng)前的venv虛擬化環(huán)境淆游。
(.virtualenv) # deactivate
# exit
10傍睹、ansible案例
安裝必要的ansible依賴包
# pip install paramiko PyYAML jinja2
# cd ansible
# git submodule update --init lib/ansible/modules/core
# git submodule update --init lib/ansible/modules/extras
加載ansible2.1
Tip: env-setup 是 ansible 為 hacker 準(zhǔn)備的一個(gè)腳本,用來(lái)設(shè)置一些ansible所需的環(huán)境變量
# . /home/deploy/.virtualenv/ansible/hacking/env-setup -q
$ ansible --version
ansible 2.1.0 (devel 6ddea3e915) last updated 2016/02/16 16:13:32 (GMT +800)
? lib/ansible/modules/core: (detached HEAD 8d126bd877) last updated 2016/02/16 16:19:09 (GMT +800)
? lib/ansible/modules/extras: (detached HEAD f6c5ed987f) last updated 2016/02/16 16:19:40 (GMT +800)
? config file = /etc/ansible/ansible.cfg
? configured module search path = Default w/o overrides