python之virtualenv 與 virtualenvwrapper 詳解


在使用 Python 開發的過程中,工程一多,難免會碰到不同的工程依賴不同版本的庫的問題;

亦或者是在開發過程中不想讓物理環境里充斥各種各樣的庫,引發未來的依賴災難。

此時,我們需要對於不同的工程使用不同的虛擬環境來保持開發環境以及宿主環境的清潔。

比如 : 需要在Linux服務器上,既可以有Django2.0環境,也能運行Django1.11.11環境,如果用平時的辦法,那么在修改Django2.0的時候如果要修改Django1.11.11,那么要退出在進去,很麻煩.

這里,就要隆重介紹 virtualenv,一個可以幫助我們管理不同 Python 環境的絕好工具。

virtualenv 可以在系統中建立多個不同並且相互不干擾的虛擬環境。

    一 . Linux 下安裝,配置virtualenv     

#指定清華源下載pip的包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
#升級pip工具
pip3 install --upgrade pip
1.下載virtualenv工具
通過物理環境的pip工具安裝
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
安裝完成后你的linux就多了一個virtualenv命令

2.創建目錄
mkdir Myproject
cd Myproject
3.創建虛擬環境venv1  venv2 

virtualenv --no-site-packages --python=python3   venv1
調用虛擬環境的命令 
--no-site-packages  這是構建干凈,隔離的模塊的參數 
--python=python3            這個參數是指定虛擬環境以哪一個物理解釋器為基礎的
最后一個是虛擬環境的名字  會創建這么一個文件夾
4.進入虛擬環境目錄,激活虛擬環境
    找到你的虛擬環境目錄bin地下的activate文件
    source myenv/venv1/bin/activate
    -
    激活虛擬環境,原理就是修改了PATH變量,path是有順序執行的
    echo $PATH 檢查環境變量
    which python3 
    which  pip3  檢查虛擬環境是否正常
    
5.測試安裝2個虛擬環境,venv1,venv2,並且運行2個django不同版本的項目

6.退出虛擬換的命令
deactivate 
7.
virtualenv是如何創建“獨立”的Python運行環境的呢?原理很簡單,就是把系統Python復制一份到virtualenv的環境,用命令source venv/bin/activate進入一個virtualenv環境時,virtualenv會修改相關環境變量,讓命令python和pip均指向當前的virtualenv環境。

    二 . 確保開發環境的一致性       

1.假設我們在本地開發環境,准備好了項目+依賴包環境
2.現在需要將項目上傳至服務器,上線發布
3.那么就要保證服務器的python環境一致性
解決方案: 1.通過命令保證環境的一致性,導出當前python環境的包
pip3 freeze > requirements.txt   

這將會創建一個 requirements.txt 文件,其中包含了當前環境中所有包及 各自的版本的簡單列表。
可以使用 “pip list”在不產生requirements文件的情況下, 查看已安裝包的列表。


2.上傳至服務器后,在服務器下創建virtualenv,在venv中導入項目所需的模塊依賴
pip3 install -r requirements.txt

 

    三 . 虛擬環境之 virtualenvwrapper      

virtualenv 的一個最大的缺點就是:

每次開啟虛擬環境之前要去虛擬環境所在目錄下的 bin 目錄下 source 一下 activate,這就需要我們記住每個虛擬環境所在的目錄。

並且還有可能你忘記了虛擬環境放在哪。。。

  • 一種可行的解決方案是,將所有的虛擬環境目錄全都集中起來,例如/opt/all_venv/,並且針對不同的目錄做不同的事。
  • 使用virtualenvwrapper管理你的虛擬環境(virtualenv),其實他就是統一管理虛擬環境的目錄,並且省去了source的步驟。

    步驟1 : 安裝virtualenvwrapper     

pip3 install virtualenvwrapper

    步驟2 :設置Linux的環境變量,每次啟動就加載

把下面兩行代碼添加到 ~/.bashrc文件中
打開文件
vim ~/.bashrc
寫入以下兩行代碼
export WORKON_HOME=~/Envs   #設置virtualenv的統一管理目錄
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   #添加virtualenvwrapper的參數,生成干凈隔絕的環境
export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3     #指定python解釋器
source /opt/python34/bin/virtualenvwrapper.sh #執行virtualenvwrapper安裝腳本
讀取文件,使得生效,此時已經可以使用virtalenvwrapper
source ~/.bashrc

   步驟3 : 基本使用 virtualenvwrapper 

創建一個虛擬環境:
$ mkvirtualenv my_django115
這會在 ~/Envs 中創建 my_django115 文件夾。

在虛擬環境上工作:激活虛擬環境my_django115
$ workon my_django115


再創建一個新的虛擬環境
$ mkvirtualenv my_django2

virtualenvwrapper 提供環境名字的tab補全功能。
當有很多環境, 並且很難記住它們的名字時,這就顯得很有用。

workon還可以任意停止你當前的環境,可以在多個虛擬環境中來回切換
workon django1.15

workon django2.0

也可以手動停止虛擬環境
deactivate

刪除虛擬環境,需要先退出虛擬環境
rmvirtualenv my_django115

    步驟4 : 常用命令   

lsvirtualenv
列舉所有的環境。
cdvirtualenv
導航到當前激活的虛擬環境的目錄中,比如說這樣您就能夠瀏覽它的 site-packages 。
cdsitepackages
和上面的類似,但是是直接進入到 site-packages 目錄中。
lssitepackages
顯示 site-packages 目錄中的內容。

完整官網介紹:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

 

大白話 :

步驟 : 
    mkvirtualenv    創建一個虛擬環境
    workon          進入虛擬環境   : (xuni) [root@localhost ~]#
    cd 到你所在的虛擬環境中        : (xuni) [root@localhost xuni]#  
    下載Django      pip3 install django(或者django==1.11.11版本)
    django-admin startproject mysite    創建django項目
    ls 查看創建的項目           : bin  include  lib  mysite
    cd 到你項目所在目錄         : manage.py  mysite
    再次cd 到mysite 目錄        : __init__.py  settings.py  urls.py  wsgi.py
    修改 settings.py文件   vim settings.py     : ALLOW_HOSTS=["*"]
    保存退出 :wq!
    運行Django   python3 manage.py runserver 0.0.0.0:8080 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM