天天看點

python虛拟環境-virtual environment

python虛拟環境-virtual environment

轉自或參考:python虛拟環境—virtual environment

https://www.jianshu.com/p/2fdb53825d35

作業系統:ubuntu16.04

舉個例子,tensorflow(tf)是一個十分流行的python機器學習庫,你現在手裡有兩個tf項目,其中項目A需要使用​<code>​python2.7 + f1.2​</code>​,項目B需要使用​<code>​python2.7 + tf1.6​</code>​.這兩個項目你得同時進行,怎麼辦?

愚蠢的辦法是需要運作項目A時,将python2.7中的tf1.6解除安裝掉,安裝tf1.2;需要運作項目B時,将python2.7中的tf1.2解除安裝掉,安裝tf1.6。如果是單個子產品還好,但是tf的不同版本又依賴于python中的其他已安裝子產品,而且tf1.2和tf1.6對依賴子產品有不同的版本要求,那麼轉換一次得解除安裝安裝好幾個子產品,是不是很爆炸?

課題組裡幾個同門共用一台伺服器,每個人擁有一個系統賬戶,其中隻有一個人擁有root權限,裡面每個人都需要使用python跑程式,而且每個人對python版本以及python子產品的版本都有不同需求,很多人又沒有root權限,如何解決?

使用python的虛拟環境可以輕松解決上面的問題!

python虛拟環境是一個隔離/獨立的python開發環境,和系統python環境可以完全隔離,互不相關,相當于多了一個python開發環境。而且你在python虛拟環境中的開發過程和使用系統python一模一樣,你可以在你建立的python虛拟環境中使用pip工具安裝任何你需要的子產品,該子產品和系統python環境完全不相關。虛拟環境的這個特點就能解決上面的問題了。

python有兩個子產品可以用于建立和管理python虛拟環境:

venv;

virtualenv;

其中,venv子產品在python3.3以上的版本可以使用,而virtualenv在python2.7+和python3.3+都可以使用。

預設的系統python中是沒有安裝以上兩個工具的,需要使用以下指令安裝:

安裝好之後,就可以使用這兩個工具安裝python虛拟環境了。

我的系統python版本有python2.7和python3.5,虛拟環境的版本隻能是系統中已有的python版本。使用virtualenv安裝虛拟環境的指令如下:

什麼參數都不指定的話,它會使用​<code>​/usr/bin/python​</code>​路徑下的python解釋器版本,即python2.7。是以會預設安裝python2.7虛拟環境,​<code>​/home/yan/env​</code>​表示虛拟環境的安裝路徑。

如果你要安裝的是python3.5的虛拟環境,可以這樣:

一般情況下,上面兩條指令就夠了,這樣安裝得到的python虛拟環境和系統python環境是完全隔離的。

更多的指令選項可以在指令行中直接輸入​<code>​virtualenv​</code>​指令擷取。

venv隻有python3可以使用,是以隻能建立python3的虛拟環境,建立指令如下:

其中,​<code>​python3 -m venv​</code>​是死指令,最後的安裝路徑自己指定。

注意:以上兩種安裝方式在安裝虛拟環境的同時也自動安裝了pip工具。

安裝好虛拟環境之後,每次使用該虛拟環境前需要使用​<code>​source​</code>​指令激活它。假設前面我在​<code>​/home/yan/env3/​</code>​目錄下安裝了python3.5的虛拟環境,現在我使用以下指令激活它:

激活之後,在指令行提示符前面會有​<code>​(env3)​</code>​的提示,表示目前你處的python虛拟環境,比如我電腦的情況:

現在你可以在激活環境中幹任何事情,比如使用pip指令在你新的python虛拟環境中安裝子產品:

或者執行python腳本。

使用完該虛拟環境之後,你需要在指令行輸入​<code>​deactivate​</code>​指令來退出該虛拟環境:

之後就回到了正常的系統python環境中。

由于你建立該虛拟環境的目的是為了跑某個項目的程式,現在該項目做完了,不需要該虛拟環境了,你可以把該虛拟環境直接删除,如何删?

直接将建立虛拟環境時生成的檔案夾删掉,就這麼簡單。比如我要把我剛才建立的env3虛拟環境删除:

在删除虛拟環境前記得一定得先退出該虛拟環境。

python虛拟環境的好處是:每個虛拟環境之間,以及虛拟環境和系統環境之間是完全隔離的,不同虛拟環境中,你可以安裝不同版本的子產品,就仿佛你可以同時擁有N多個不同的python開發環境。

唯一麻煩的一點是:每次進入某個虛拟環境之前,都要使用​<code>​source​</code>​指令激活。每次使用完,都要使用​<code>​deactivate​</code>​指令退出。

​​版權申明:歡迎轉載,但請注明出處​​

一些博文中有一些參考内容因時間久遠找不到來源了沒有注明,如果侵權請聯系我删除。

上一篇: 安裝Proxmox
下一篇: Proxmox VE