python多版本和虛擬環(huán)境(pyenv+conda or virtualenv)

python 版本有

2.7.X
3.X
Anaconda2
Anaconda3

pyenv

pyenv是一個(gè)管理各個(gè)python版本的管理器??梢栽谙到y(tǒng)里同時(shí)保留多個(gè)python版本,等需要時(shí)定義需要的版本。

項(xiàng)目地址

安裝

看項(xiàng)目地址中的readme

使用

pyenv install --list

查看pyenv可安裝的版本列表

pyenv install anaconda2-4.2.0
pyenv uninstall x.x.x

安裝和卸載指定版本,會(huì)將python版本安裝在$(pyenv root)/versions/

pyenv versions

查看當(dāng)前已經(jīng)安裝了的python版本。輸出內(nèi)容中,system關(guān)鍵字是系統(tǒng)python版本。 *表示當(dāng)前環(huán)境所處的版本。

pyenv global anaconda2

全局切換為anaconda科學(xué)計(jì)算環(huán)境(不建議這么做),做了如果要恢復(fù),則將最后一個(gè)參數(shù)改為--unset

pyenv local python3.4.1

當(dāng)前環(huán)境接環(huán)。在當(dāng)前目錄以下。如果要恢復(fù),則將最后一個(gè)參數(shù)改為--unset

virtualenv

本來(lái)這是一個(gè)單獨(dú)的軟件用來(lái)虛擬一個(gè)python版本環(huán)境,讓每個(gè)工作環(huán)境都有一套獨(dú)立的python各自的第三方插件互不影響。然而在 pyenv 下有一個(gè)插件 pyenv-virtualenv 他可以在 pyenv 的環(huán)境下?lián)?fù)起 virtualenv 的事情。(如果使用的是原生python可以用這個(gè)工具,如果用的是anaconda則不用這個(gè),用下一章說(shuō)的conda工具來(lái)完成虛擬環(huán)境)

項(xiàng)目地址

安裝

看項(xiàng)目地址中的readme

使用

pyenv virtualenv 2.7.1 env271

在當(dāng)前目錄下創(chuàng)建一個(gè) python 版本為2.7.1的環(huán)境,環(huán)境名字為 env271。 這個(gè)環(huán)境的真實(shí)目錄位于~/.pyenv/versions/

pyenv activate env271

(創(chuàng)建時(shí)并不激活)激活當(dāng)前環(huán)境。此時(shí)已經(jīng)進(jìn)入虛擬環(huán)境,在當(dāng)前環(huán)境下所有pip等操作都不會(huì)影響系統(tǒng)環(huán)境和系統(tǒng)路徑。

pyenv deactivate

離開(kāi)已激活的環(huán)境,切換回系統(tǒng)環(huán)境。但并沒(méi)有被刪除,下次依舊可以啟動(dòng)。

pyenv uninstall env271

刪除一個(gè)環(huán)境,當(dāng)然也可以到真實(shí)目錄下刪除文件夾。

conda

本來(lái)不想用這個(gè)的,但是因?yàn)?pyenv-virtualenv 有一些問(wèn)題,無(wú)法很好的管理conda環(huán)境,比如有一些anaconda 自帶的一些命令(例如pylint)無(wú)法被使用。因此還是老老實(shí)實(shí)使用 conda 來(lái)管理虛擬環(huán)境。

安裝

conda 是自帶于 anaconda 的所以并不需要額外安裝,如果在 anaconda 環(huán)境中就可以使用。conda 不僅可以進(jìn)行 環(huán)境管理,還可以包管理,和對(duì) anaconda和conda 進(jìn)行版本升級(jí)。

使用

由于conda使用方法太多,因此這里羅列一些常用的主要是一些虛擬環(huán)境的命令。具體的到官網(wǎng)文檔去查看一下。

首先conda工具是需要在anaconda環(huán)境下的,因此先執(zhí)行pyenv local anaconda3-4.2.0進(jìn)入anaconda環(huán)境后就可以執(zhí)行conda工具了。

conda create --name myflakes python=x.x anaconda
conda create --help

創(chuàng)建一個(gè)虛擬環(huán)境??梢灾付郑付ò?,甚至制定python(這樣的話就python版本管理了所以不建議使用,python版本管理交給pyenv),所以命令中 python=x.x 可以不寫(xiě)

conda info --envs
conda env list

羅列已經(jīng)創(chuàng)建的環(huán)境,兩條命令是一樣的。

source activate myflakes //Linux,OSX
activate myflakes        //Windows

激活一個(gè)環(huán)境。和virtualenv一樣,創(chuàng)建不等于激活。激活后才能真正使用虛擬環(huán)境。
如果發(fā)生錯(cuò)誤Error: activate must be sourced. Run 'source activate envname'說(shuō)明activate命令沒(méi)有找對(duì),導(dǎo)致錯(cuò)誤。吧命令改成

source <PATH TO ANACONDA>/anaconda3/bin/activate <ENV NAME>

這樣就能成功建立虛擬環(huán)境了。

conda remove --name myflakes --all

刪除一個(gè)虛擬環(huán)境。

conda create --name flowers --clone snowflakes

復(fù)制一個(gè)虛擬環(huán)境。這個(gè)是個(gè)不錯(cuò)的好功能。

conda env export > environment.yml
conda env create -f environment.yml

conda還能吧環(huán)境配置文件導(dǎo)出,在另一臺(tái)機(jī)器上重新讀入配置文件,就能復(fù)刻你的環(huán)境了。

其他使用

conda 還能進(jìn)行包的管理。調(diào)用的是 pip 所以也很棒。

conda list
conda list -n myflakes
conda search numpy //查詢(xún)package

查看當(dāng)前環(huán)境已安裝包,用-n指定后,就是查看某個(gè)環(huán)境下的已安裝包

conda install -n  myflakes numpy
conda update  -n  myflakes numpy
conda remove  -n  myflakes numpy

為某個(gè)指定的環(huán)境安裝包,升級(jí)包,刪除包。

conda update conda
conda update anaconda
conda update python

它還能升級(jí)自身和anaconda和python的版本。

它和pip一樣也能設(shè)置安裝包的鏡像位置。其余還有能使用R命令等等,都到官網(wǎng)文檔中搜索一下。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容