最近在進(jìn)行個人博客遷移,因?yàn)榘⒗镌品?wù)和域名服務(wù)都到期了左电,得知騰訊云對于學(xué)生更優(yōu)惠后,我選擇了把博客遷移到騰訊云上,騰訊云的學(xué)生認(rèn)證入口:學(xué)生認(rèn)證卵渴。目前每天只有200個名額兑障,需要的童鞋手要快李命。由于博客遷移一次登淘,就要安裝一次相應(yīng)的庫,有的時候并不知道自己項(xiàng)目中裝了些啥三方庫封字,所以只有邊試錯邊部署黔州,很費(fèi)精力,所以便萌生了使用pyvenv構(gòu)建虛擬目錄進(jìn)行部署項(xiàng)目阔籽。
查閱了網(wǎng)上的一些資料發(fā)現(xiàn)流妻,很多都是基于linux平臺的,基于windows平臺的特別少笆制。所以我打算把過程記錄下來绅这。方便自己,也方便他人在辆。
從python3.4開始证薇,就已經(jīng)自帶了pyvenv,我使用的是python3.5开缎。如果版本低于3.4棕叫,可以使用pip安裝virtualenv這個庫林螃,它們用法基本一致奕删。
先切換到你需要放置項(xiàng)目的目錄,然后在命令行中使用pyvenv新建虛擬環(huán)境:
python -m venv test
這個命令執(zhí)行完成之后疗认,當(dāng)前目錄會新建一個名為test的目錄完残,里面就是虛擬環(huán)境伏钠。
激活虛擬環(huán)境,需要先切換到 test/Scripts/目錄下,執(zhí)行activate.bat這個批處理谨设,這個就和linux有所區(qū)別:
cd test/Scripts
activate
激活虛擬環(huán)境后的命令行熟掂,最前面會出現(xiàn)項(xiàng)目名稱, 比如下面:
(test) C:\Users\Administrator\test\Scripts>
虛擬環(huán)境中的python并沒有安裝擴(kuò)展庫(pip除外),我們通過pip在虛擬環(huán)境中安裝的任何擴(kuò)展庫都只對當(dāng)前虛擬環(huán)境(test)有效扎拣,對真實(shí)的環(huán)境和別的虛擬環(huán)境都沒有效赴肚。比如我們繼續(xù)執(zhí)行以下命令安裝requests庫:
pip install requests
然后導(dǎo)入它:
import requests
這個是可以運(yùn)行的。如果我們的真實(shí)環(huán)境沒裝requests的話二蓝,我們使用這條命令就會報錯誉券。換句話說,就是虛擬環(huán)境和真實(shí)環(huán)境刊愚、還有別的虛擬環(huán)境都各不影響踊跟。
激活虛擬環(huán)境后可以安裝各種庫,執(zhí)行各種操作了鸥诽,怎么退出虛擬環(huán)境呢商玫?
deactivate
這個命令不必切換到 test/Scripts, 哪里都可以執(zhí)行。
這里說完了虛擬環(huán)境的激活和退出牡借,下面說說從A環(huán)境遷移到B虛擬環(huán)境怎么重建依賴的問題,這也是我自己運(yùn)用虛擬環(huán)境的一個很重要的原因拳昌。
先在A環(huán)境中把所有依賴都保存到re.txt中,使用pip freeze:
pip freeze > re.txt
這時會在當(dāng)前目錄生成re.txt,通過記事本可以直接打開:
notepad re.txt
可以看到類似內(nèi)容:
<pre>
Flask==0.11.1
Flask-Login==0.3.2
Flask-SQLAlchemy==2.1
</pre>
我們可以修改該文件來改變我們虛擬環(huán)境的相關(guān)依賴,比如我們不需要Flask,直接刪除Flask==0.11.1即可钠龙。
這個文件怎么用呢,我們先激活B虛擬環(huán)境地回,然后可以一條命令安裝所有依賴:
pip install -r re.txt
到此,B虛擬環(huán)境和A環(huán)境的依賴就一樣了俊鱼。還有一點(diǎn)我需要說明刻像,有的擴(kuò)展庫通過pip install的方式安裝可能會出現(xiàn)問題(比如 lxml),那么通過上面那條命令安裝也會失敗并闲,這種擴(kuò)展庫我們只有去這里下載編譯好的.whl文件進(jìn)行單獨(dú)安裝细睡。先在虛擬環(huán)境中安裝wheel(pip install wheel),然后就可以直接用pip命令安裝.whl文件了帝火。
關(guān)于python在win平臺上的虛擬環(huán)境的知識大概就如此了溜徙。