最近在進行個人博客遷移,因為阿里云服務和域名服務都到期了,得知騰訊云對于學生更優(yōu)惠后,我選擇了把博客遷移到騰訊云上,騰訊云的學生認證入口:學生認證。目前每天只有200個名額,需要的童鞋手要快。由于博客遷移一次,就要安裝一次相應的庫,有的時候并不知道自己項目中裝了些啥三方庫,所以只有邊試錯邊部署,很費精力,所以便萌生了使用pyvenv構建虛擬目錄進行部署項目。
查閱了網(wǎng)上的一些資料發(fā)現(xiàn),很多都是基于linux平臺的,基于windows平臺的特別少。所以我打算把過程記錄下來。方便自己,也方便他人。
從python3.4開始,就已經(jīng)自帶了pyvenv,我使用的是python3.5。如果版本低于3.4,可以使用pip安裝virtualenv這個庫,它們用法基本一致。
先切換到你需要放置項目的目錄,然后在命令行中使用pyvenv新建虛擬環(huán)境:
python -m venv test
這個命令執(zhí)行完成之后,當前目錄會新建一個名為test的目錄,里面就是虛擬環(huán)境。
激活虛擬環(huán)境,需要先切換到 test/Scripts/目錄下,執(zhí)行activate.bat這個批處理,這個就和linux有所區(qū)別:
cd test/Scripts
activate
激活虛擬環(huán)境后的命令行,最前面會出現(xiàn)項目名稱, 比如下面:
(test) C:\Users\Administrator\test\Scripts>
虛擬環(huán)境中的python并沒有安裝擴展庫(pip除外),我們通過pip在虛擬環(huán)境中安裝的任何擴展庫都只對當前虛擬環(huán)境(test)有效,對真實的環(huán)境和別的虛擬環(huán)境都沒有效。比如我們繼續(xù)執(zhí)行以下命令安裝requests庫:
pip install requests
然后導入它:
import requests
這個是可以運行的。如果我們的真實環(huán)境沒裝requests的話,我們使用這條命令就會報錯。換句話說,就是虛擬環(huán)境和真實環(huán)境、還有別的虛擬環(huán)境都各不影響。
激活虛擬環(huán)境后可以安裝各種庫,執(zhí)行各種操作了,怎么退出虛擬環(huán)境呢?
deactivate
這個命令不必切換到 test/Scripts, 哪里都可以執(zhí)行。
這里說完了虛擬環(huán)境的激活和退出,下面說說從A環(huán)境遷移到B虛擬環(huán)境怎么重建依賴的問題,這也是我自己運用虛擬環(huán)境的一個很重要的原因。
先在A環(huán)境中把所有依賴都保存到re.txt中,使用pip freeze:
pip freeze > re.txt
這時會在當前目錄生成re.txt,通過記事本可以直接打開:
notepad re.txt
可以看到類似內容:
<pre>
Flask==0.11.1
Flask-Login==0.3.2
Flask-SQLAlchemy==2.1
</pre>
我們可以修改該文件來改變我們虛擬環(huán)境的相關依賴,比如我們不需要Flask,直接刪除Flask==0.11.1即可。
這個文件怎么用呢,我們先激活B虛擬環(huán)境,然后可以一條命令安裝所有依賴:
pip install -r re.txt
到此,B虛擬環(huán)境和A環(huán)境的依賴就一樣了。還有一點我需要說明,有的擴展庫通過pip install的方式安裝可能會出現(xiàn)問題(比如 lxml),那么通過上面那條命令安裝也會失敗,這種擴展庫我們只有去這里下載編譯好的.whl文件進行單獨安裝。先在虛擬環(huán)境中安裝wheel(pip install wheel),然后就可以直接用pip命令安裝.whl文件了。
關于python在win平臺上的虛擬環(huán)境的知識大概就如此了。