?Python3開發之虛擬環境virtualenv
與virtualenvwrapper
?
在使用?Python
?開發的過程中,工程一多,難免會碰到不同的工程依賴不同版本的庫的問題;
亦或者是在開發過程中不想讓物理環境里充斥各種各樣的庫,引發未來的依賴災難。
此時,我們需要對于不同的工程使用不同的虛擬環境來保持開發環境以及宿主環境的清潔。
1、安裝pip3? install? virtualenv
?
2、命令行創建虛擬環境
2.1創建存放虛擬環境的文件夾(我的是想放在H:\envs)
?
2.2查看virtualenv有哪些命令
?
?
?2.3 創建一個env1的虛擬、干凈的Python環境
?
?2.4激活創建的env1虛擬環境
?
?
?
?
?
?2.5 測試剛剛激活的env1環境
? 新安裝的Python環境是很干凈的,沒有django等模塊
?
?2.6在env1環境安裝django1.9版本
?
?2.7退出虛擬環境env1
?
?3、Pycharm創建虛擬環境
3.1打開設置
?
?3.2設置虛擬環境名稱、路徑;進行創建
?
?3.3查看是否成功
?
?4、Linux下安裝、配置virtualenv
4.1下載
#指定清華源下載pip的包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
#升級pip工具
pip3 install --upgrade pip
?
?
4.2安裝、配置
1.安裝virtualenv pip3 install virtualenv
設置軟連接 ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv2.創建目錄 mkdir Myproject cd Myproject 3.創建獨立運行環境-命名 virtualenv --no-site-packages --python=python3 venv#得到獨立第三方包的環境,并且指定解釋器是python3 4.進入虛擬環境 source venv/bin/activate#此時進入虛擬環境(venv)Myproject 5.安裝第三方包 (venv)Myproject: pip3 install django==1.9.8 #此時pip的包都會安裝到venv環境下,venv是針對Myproject創建的 6.退出venv環境 deactivate命令 7. virtualenv是如何創建“獨立”的Python運行環境的呢?原理很簡單,就是把系統Python復制一份到virtualenv的環境,用命令source venv/bin/activate進入
一個virtualenv環境時,virtualenv會修改相關環境變量,讓命令python和pip均指向當前的virtualenv環境。
?
?
4.3確保開發環境的一致性
1.假設我們在本地開發環境,準備好了項目+依賴包環境
2.現在需要將項目上傳至服務器,上線發布
3.那么就要保證服務器的python環境一致性
?
?
解決方案:
1.通過命令保證環境的一致性,導出當前python環境的包
pip3 freeze > requirements.txt 這將會創建一個 requirements.txt 文件,其中包含了當前環境中所有包及 各自的版本的簡單列表。
可以使用 “pip list”在不產生requirements文件的情況下, 查看已安裝包的列表。
requirements.txt文件格式:
requests==1.2.0?
Flask==0.10.1
2.上傳至服務器后,在服務器下創建virtualenv,在venv中導入項目所需的模塊依賴 pip3 install -r requirements.txt
?pip批量安裝package
??? 將需要安裝的包保存在aa.txt中
??? cd到aa.txt所在目錄,運行:
?? $ pip install -r aa.txt
?
pip批量卸載package
??? 將需要卸載的包保存在aa.txt中
??? cd到aa.txt所在目錄,運行:
?? $ pip uninstall -r aa.txt
備注:需要卸載的包可從pip freeze得到
$ pip freeze?????????????????? # 顯示已安裝的包名及版本
$ pip freeze > aa.txt????????? # 將已安裝的包名及版本寫入aa.txt
?
5、虛擬環境之virtualenvwrapper
virtualenv
?的一個最大的缺點就是:
每次開啟虛擬環境之前要去虛擬環境所在目錄下的?bin
?目錄下?source
?一下?activate
,這就需要我們記住每個虛擬環境所在的目錄。
并且還有可能你忘記了虛擬環境放在哪。。。
- 一種可行的解決方案是,將所有的虛擬環境目錄全都集中起來,例如/opt/all_venv/,并且針對不同的目錄做不同的事。
- 使用virtualenvwrapper管理你的虛擬環境(virtualenv),其實他就是統一管理虛擬環境的目錄,并且省去了source的步驟。
?
5.1:安裝virtualenvwrapper
pip3 install virtualenvwrapper
?
?
5.2設置Linux的環境變量,每次啟動就加載virtualenvwrapper
把下面兩行代碼添加到 ~/.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
?
?
5.3基本使用virtualenvwrapper
創建一個虛擬環境: $ mkvirtualenv my_django115 這會在 ~/Envs 中創建 my_django115 文件夾。在虛擬環境上工作:激活虛擬環境my_django115 $ workon my_django115再創建一個新的虛擬環境 $ mkvirtualenv my_django2virtualenvwrapper 提供環境名字的tab補全功能。 當有很多環境, 并且很難記住它們的名字時,這就顯得很有用。workon還可以任意停止你當前的環境,可以在多個虛擬環境中來回切換 workon django1.15workon django2.0也可以手動停止虛擬環境 deactivate刪除虛擬環境,需要先退出虛擬環境 rmvirtualenv my_django115
?
?
5.4常用其他命令
lsvirtualenv 列舉所有的環境。 cdvirtualenv 導航到當前激活的虛擬環境的目錄中,比如說這樣您就能夠瀏覽它的 site-packages 。 cdsitepackages 和上面的類似,但是是直接進入到 site-packages 目錄中。 lssitepackages 顯示 site-packages 目錄中的內容。完整官網介紹:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
?
?
5.5圖解
?
六、異常情況
假如source ~/.bashrc
時,提示以下錯誤
$ source ~/.bashrc
>> -bash: /usr/local/bin/virtualenvwrapper.sh: No such file or directory
【原因】.bashrc
文件中的virtualenvwrapper.sh
所在目錄錯誤。
【解決方案】
①查找virtualenvwrapper.sh
所在目錄
$ find / -name "virtualenvwrapper.sh"
>> /usr/local/python3/bin/virtualenvwrapper.sh
②把.bashrc
文件的virtualenvwrapper.sh
目錄更改為實際所在目錄
source /usr/local/python3/bin/virtualenvwrapper.sh # virtualenvwrapper.sh實際所在目錄
?
假如創建虛擬環境時,提示以下錯誤
$ mkvirtualenv my_env
>> ERROR: virtualenvwrapper could not find virtualenv in your path
【解決方案】
①查找virtualenv
所在目錄
$ find / -name "virtualenv"
>> /usr/local/python3/bin/virtualenv
②創建軟鏈接
$ ln -s /usr/local/python3/bin/virtualenv /usr/local/bin/virtualenv