Python 虛擬環境 virtualenv python虛擬環境--virtualenv 如何在pycharm中使用配置好的virtualenv環境

參考連接:python虛擬環境--virtualenv  python虛擬環境安裝和配置  如何在pycharm中使用配置好的virtualenv環境html

virtualenv

  Python 今天咱們就不聊了。接下來我們說說virtualenv,英文比較好的同窗,可能已經猜到了一半,virtual,即:虛擬的。那env是什麼鬼?environment嗎?因此翻譯成中文就是」虛擬環境「。
    到底什麼是虛擬環境呢?顧名思義,它是一個虛擬出來的環境。通俗的來說,能夠藉助虛擬機,docker來理解虛擬環境,就是把一部份內容獨立出來,咱們把這部分獨立出來的東西稱做「容器」,在這個容器中,咱們能夠只安裝咱們須要的依賴包,並且各個容器之間互相隔離,互不影響。咱們要學習Django,咱們經過這個環境搞一個Django的虛擬環境就行了。
【前提概要】
    Django也是一個很是流行的web框架。因爲Django的迭代更新很是快,也比較頻繁,因此有一些過期的東西須要丟棄掉,一些新的東西須要加進來,從而致使不一樣的版本之間不兼容。好比Django1.三、Django1.四、Django1.8之間就有很大的差別性。
    或者是說,以Python的版本舉例,如今工做中使用的Python版本與Python2.x和Python3.x兩種。
【故事背景】
  假設要進行Python web開發,使用的是Django。手上還有兩個老項目A和B須要維護,而新項目C也正在開發中。這裏項目A使用的是django1.3,項目B使用的是django1.4,而新項目C使用的是Django1.8。那麼問題來了,如何同時在本地進行ABC這三個項目的開發和維護?
正常的模式多是這樣:如今在A項目上有一個BUG須要修復,因而,先執行下面的命令,刪除掉原來的版本:python

pip uninstall django

而後再執行下面的命令安裝django1.3web

pip install django==1.3

數分鐘後,bug修復完畢,好,如今進行新項目C的開發了,而後又要重複上面的故事。
  好了,這仍是最理想的狀況。最不理想的狀況就是基於django的第三方依賴也是跟Django版本相關的,因而除了install和uninstall Django以外,還要uninstall和install其依賴,Orz,這特麼的就尷尬了...docker

VirtualEnv能作什麼呢?django

  VirtualEnv能夠搭建虛擬且獨立的python運行環境, 使得單個項目的運行環境與其它項目獨立起來。同時也能夠用於在一臺機器上建立多個獨立的python運行環境,VirtualEnvWrapper爲前者提供了一些便利的命令行上的封裝。
  Virtualenv是一個很是好的virtual python environment builder,他最大的好處是,可讓每個python項目單獨使用一個環境,而不會影響python系統環境,也不會影響其餘項目的環境。
  Virtualenv可用於建立獨立的Python環境,在這些環境裏面能夠選擇不一樣的Python版本或者不一樣的Packages,而且能夠在沒有root權限的狀況下在環境裏安裝新套件,互相不會產生任何的影響。ubuntu

言歸正傳bash

安裝,virtualenv本質上是個python包, 使用pip安裝:app

pip install virtualenv

在工做目錄下建立虛擬環境(默認在當前目錄):注意須要自定義虛擬環境的名字!框架

~$virtualenv TestEnv
New python executable in ~/TestEnv/bin/python
Installing setuptools, pip, wheel...done.

默認狀況下, 虛擬環境中不包括系統的site-packages, 若要使用請添加參數:python2.7

語法:virtualenv --system-site-packages TestEnv

使用virtualenv默認python版本建立虛擬環境

語法:virtualenv --no-site-packages ubuntu_env

就能夠在當前目錄建立一個env目錄(虛擬環境名稱,這個文件夾就是保存 Python 虛擬環境),你會注意到,virtualenv會把python,setuptools和pip給你安裝上。

自定義python版本建立虛擬環境
  1. 安裝須要版本的python
  2. 指定virtualenv中的python版本
      virtualenv --no-site-packages --python=2.7 env

Note:
  1. 建立virtualenv虛擬環境以前,系統中必需要安裝有對應版本的python,而且卸載以後當前虛擬環境就無效了。系統中能夠同時存在python2和python3,經過環境變量中的系統變量path(不是用戶變量)控制cmd或者系統中使用哪一個版本的python,哪一個版本的路徑在前面就優先使用哪一個版本。
  2. –no-site-packages表示不包括系統全局的Python安裝包,這樣會更令環境更乾淨
  3. –python=python2.7指定Python的版本未系統已經安裝了的Python2.7
  4. env是創建的虛擬環境名稱
  5. 沒有安裝python2.7或者使用命令virtualenv --no-site-packages --python=python2.7 env會出現The executable python does notexist 錯誤

注意: 

  安裝的庫的位置在虛擬環境的 env/Lib/site-packages/目錄裏,而不是在系統的python的Lib/site-packages目錄裏,這樣你就知道爲何虛擬環境是分開的了吧。
  Note :virtualenv 建立的虛擬環境與主機的 Python 環境徹底無關,你主機配置的庫不能在 virtualenv 中直接使用。你須要在虛擬環境中利用 pip install 再次安裝配置後才能使用。

關於建立一個虛擬環境,你也能夠這樣作!

一、爲一個工程建立一個虛擬環境:

$ cd my_project_dir
$ virtualenv venv  #venv爲虛擬環境目錄名,目錄名自定義

  virtualenv venv 將會在當前的目錄中建立一個文件夾,包含了Python可執行文件,以及 pip 庫的一份拷貝,這樣就能安裝其餘包了。
   虛擬環境的名字(此例中是 venv )能夠是任意的;若省略名字將會把文件均放在當前目錄。

  在任何你運行命令的目錄中,這會建立Python的拷貝,並將之放在叫作 venv 的文件中。

二、你能夠選擇使用一個Python解釋器:
$ virtualenv -p /usr/bin/python2.7 venv    # -p參數指定Python解釋器程序路徑
這將會使用 /usr/bin/python2.7 中的Python解釋器。

虛擬環境激活,若想使用就須要激活建立的虛擬環境!
進入虛擬環境目錄 執行source ./bin/activate激活虛擬環境:

# 相對路徑方式:
~/TestEnv$ source bin/activate (TestEnv) ~/TestEnv$ python -V Python 2.7.11+

# 絕對路徑方式 $ source venv/bin/activate # 絕對路徑

 從如今起,任何你使用pip安裝的包將會放在 venv 文件夾中,與全局安裝的Python隔絕開。像日常同樣安裝包,好比:

$ pip install requests

使用requirements.txt安裝版本包(requirements.txt文件下保存的都是各個依賴包的版本信息)

pip install -r requirements.txt

  進入環境env1,執行pip freeze > requirements.txt將包依賴信息保存在requirements.txt文件中。
  最好手動調整一下順序,好比numpy和scipy要在matplotlib前面安裝;另外若是想安裝最新版本的,再將後面的版本號==1.9.1什麼的刪除。
  而後進入目的虛擬環境env2,執行pip install -r requirements.txt,pip就會自動從網上下載並安裝全部包。
  虛擬環境env2若是是env1的拷貝,最好先pip uninstall -ry requirements.txt,再pip install -r requirements.txt

若是你在虛擬環境中暫時完成了工做,則能夠停用它:

退出虛擬環境:

# 在環境下,相對退出
(TestEnv) ~/TestEnv$ deactivate ~/TestEnv$

#走絕對路徑
$ .venv/bin/deactivate

這將會回到系統默認的Python解釋器,包括已安裝的庫也會回到默認的。

要刪除一個虛擬環境,只需刪除它的文件夾。(執行 rm -rf venv )。
  這裏virtualenv 有些不便,由於virtual的啓動、中止腳本都在特定文件夾,可能一段時間後,你可能會有不少個虛擬環境散落在系統各處,你可能忘記它們的名字或者位置。

virtualenvwrapper 

  鑑於virtualenv不便於對虛擬環境集中管理,因此推薦直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虛擬環境工做變得便利。它把你全部的虛擬環境都放在一個地方。
一、安裝virtualenvwrapper(確保virtualenv已安裝)

pip install virtualenvwrapper
pip install virtualenvwrapper-win  #Windows使用該命令

二、安裝完成後,在~/.bashrc寫入如下內容

export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh 

  第一行:virtualenvwrapper存放虛擬環境目錄
  第二行:virtrualenvwrapper會安裝到python的bin目錄下,因此該路徑是python安裝目錄下bin/virtualenvwrapper.sh

source ~/.bashrc    #讀入配置文件,當即生效

 virtualenvwrapper基本使用

1.建立虛擬環境 mkvirtualenv

mkvirtualenv venv
  

這樣會在WORKON_HOME變量指定的目錄下新建名爲venv的虛擬環境。
若想指定python版本,可經過"--python"指定python解釋器

mkvirtualenv --python=/usr/local/python3.5.3/bin/python venv

2. 基本命令  
  查看當前的虛擬環境目錄

[root@localhost ~]# workon
py2
py3

  切換到虛擬環境

[root@localhost ~]# workon py3
(py3) [root@localhost ~]# 

  退出虛擬環境

(py3) [root@localhost ~]# deactivate
[root@localhost ~]# 

  刪除虛擬環境

rmvirtualenv venv

使用pycharm自動創建虛擬環境

也可使用 pycharm 自帶功能創建虛擬環境

以後,將 requirements.txt 文件放到虛擬目錄 venv 下,pycharm自動識別,點擊『Install requirements』安裝相應的 package。

或者使用:

(venv) $ pip freeze >requirements.txt    # 生成 (venv) $ pip install -r requirements.txt # 安裝

 

接下來我們說說virtualenv,英文比較好的同窗,可能已經猜到了一半,virtual,即:虛擬的。那env是什麼鬼?environment嗎?對,是它!是它!就是它!因此翻譯成中文就是」虛擬環境「

慢着,師傅,先踩一腳,到底什麼是虛擬環境呢?顧名思義,它是一個虛擬出來的環境。通俗的來說,能夠藉助虛擬機,docker來理解虛擬環境,就是把一部份內容獨立出來,咱們把這部分獨立出來的東西稱做「容器」,在這個容器中,咱們能夠只安裝咱們須要的依賴包,並且各個容器之間互相隔離,互不影響。譬如,本次學習須要用到Flask,因此咱們能夠作一個Flask的虛擬環境,裏面只須要安裝Flask相關包就能夠了。再譬如,下次咱們要學習Django,咱們再搞一個Django的虛擬環境就行了。

慢着,師傅,我彷佛還不懂耶?咱們再來一個栗子吧。

【前提概要】
Django也是一個比較流行的web框架,比Flask要複雜得多。Django的迭代更新很是快,也比較頻繁,因此有一些過期的東西須要丟棄掉,一些新的東西須要加進來,從而致使不一樣的版本之間不兼容。好比Django1.三、Django1.四、Django1.8之間就有很大的差別性。

【故事背景】
假設要進行Python web開發,使用的是Django。手上還有兩個老項目A和B須要維護,而新項目C也正在開發中。這裏項目A使用的是django1.3,項目B使用的是django1.4,而新項目C使用的是Django1.8。那麼問題來了,如何同時在本地進行ABC這三個項目的開發和維護?

正常的模式多是這樣:如今在A項目上有一個BUG須要修復,因而,先執行下面的命令,刪除掉原來的版本:

pip uninstall django

而後再執行下面的命令安裝django1.3

pip install django==1.3

數分鐘後,bug修復完畢,好,如今進行新項目C的開發了,而後又要重複上面的故事。

好了,這仍是最理想的狀況。什麼?還有不理想的狀況?是的,基於django的第三方依賴也是跟Django版本相關的,因而除了install和uninstall Django以外,還要uninstall和install其依賴,Orz,這特麼的就尷尬了...

好了,能夠開始虛擬環境之旅了,跟緊了,同窗們。


做者: NavCat
連接:http://www.imooc.com/article/18537?block_id=tuijian_wz
來源:慕課網
本文原創發佈於慕課網 ,轉載請註明出處,謝謝合做!

接下來我們說說virtualenv,英文比較好的同窗,可能已經猜到了一半,virtual,即:虛擬的。那env是什麼鬼?environment嗎?對,是它!是它!就是它!因此翻譯成中文就是」虛擬環境「

慢着,師傅,先踩一腳,到底什麼是虛擬環境呢?顧名思義,它是一個虛擬出來的環境。通俗的來說,能夠藉助虛擬機,docker來理解虛擬環境,就是把一部份內容獨立出來,咱們把這部分獨立出來的東西稱做「容器」,在這個容器中,咱們能夠只安裝咱們須要的依賴包,並且各個容器之間互相隔離,互不影響。譬如,本次學習須要用到Flask,因此咱們能夠作一個Flask的虛擬環境,裏面只須要安裝Flask相關包就能夠了。再譬如,下次咱們要學習Django,咱們再搞一個Django的虛擬環境就行了。


做者: NavCat
連接:http://www.imooc.com/article/18537?block_id=tuijian_wz
來源:慕課網
本文原創發佈於慕課網 ,轉載請註明出處,謝謝合做!

接下來我們說說virtualenv,英文比較好的同窗,可能已經猜到了一半,virtual,即:虛擬的。那env是什麼鬼?environment嗎?對,是它!是它!就是它!因此翻譯成中文就是」虛擬環境「

慢着,師傅,先踩一腳,到底什麼是虛擬環境呢?顧名思義,它是一個虛擬出來的環境。通俗的來說,能夠藉助虛擬機,docker來理解虛擬環境,就是把一部份內容獨立出來,咱們把這部分獨立出來的東西稱做「容器」,在這個容器中,咱們能夠只安裝咱們須要的依賴包,並且各個容器之間互相隔離,互不影響。譬如,本次學習須要用到Flask,因此咱們能夠作一個Flask的虛擬環境,裏面只須要安裝Flask相關包就能夠了。再譬如,下次咱們要學習Django,咱們再搞一個Django的虛擬環境就行了。

做者: NavCat 連接:http://www.imooc.com/article/18537?block_id=tuijian_wz 來源:慕課網 本文原創發佈於慕課網 ,轉載請註明出處,謝謝合做!
相關文章
相關標籤/搜索