python開發之virtualenv與virtualenvwrapper

Bound_w發表於2018-12-28

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

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

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

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

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

1.安裝virtualevn

1.下載virtualenv工具
通過物理環境的pip工具安裝
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
安裝完成後你的linux就多了一個virtualenv命令
2.建立虛擬環境venv1  venv2 

virtualenv --no-site-packages --python=python3   s15venv1
呼叫虛擬環境的命令 
--no-site-packages  這是構建乾淨,隔離的模組的引數 
--python=python3            這個引數是指定虛擬環境以哪一個物理直譯器為基礎的
最後一個是虛擬環境的名字  會建立這麼一個資料夾
3.進入虛擬環境目錄,啟用 虛擬環境
    找到你的虛擬環境目錄bin地下的activate檔案
    source myenv/chunsheng/bin/activate
    -
    啟用虛擬環境,原理就是修改了PATH變數,path是有順序執行的
    echo $PATH 檢查環境變數
    which python3 
    which  pip3  檢查虛擬環境是否正常
    
4.測試安裝2個虛擬環境,venv1,venv2,並且執行2個django不同版本的專案

5.退出虛擬換的命令
deactivate 

確保開發環境的一致性

解決方案:
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.安裝這個命令,必須得在物理直譯器地下,注意!!
pip3 install virtualenvwrapper

注意:這裡path的配置,需要將物理直譯器的python,放在path最前面

echo $PATH 
這裡保持配置和我一樣,將python3放在最前面
[root@localhost ~]# echo $PATH
/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

 

2.修改環境變數,每次開機就載入這個virtualenvwrapper工具

vim ~/.bashrc   #vim編輯使用者家目錄下的.bashrc檔案,這個檔案是使用者在登入的時候,就讀取這個檔案
    #export 是讀取shell命令的作用
    #這些變數根據你自己的絕對路徑環境修改
    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安裝指令碼 

 

3.重新登入會話,使得這個配置生效
logout
ssh ....

4.此時正確的話 virtualenvwrapper工具已經可以使用

提供了哪些命令?
mkvirtualenv  虛擬環境名   #自動下載虛擬環境,且啟用虛擬環境

workon  虛擬環境名   #啟用虛擬環境

deactivate  退出虛擬環境 

rmvirtualenv    刪除虛擬環境 

cdvirtualenv  進入當前已啟用的虛擬環境所在的目錄

cdsitepackages 進入當前啟用的虛擬環境的,python包的目錄

超哥部落格:https://www.cnblogs.com/pyyu/p/9015317.html

相關文章