Python 的第三方包成千上萬,在一個 Python 環境下開發時間越久、安裝依賴越多,就越容易出現依賴包沖突的問題。為了解決這個問題,開發者們開發出了 virtualenv,可以搭建虛擬且獨立的 Python 環境。
這樣就可以使每個項目環境與其他項目獨立開來,保持環境的干凈,解決包沖突問題。
virtualenv
virtualenv是一個第三方包,是管理虛擬環境的常用方法之一。此外,Python 3 中還自帶了虛擬環境管理包。
我們可以用easy_install
或者pip
安裝。
pip install virtualenv
創建項目的虛擬環境
$ cd my_project_folder $ virtualenv venv # venv 可替換為別的虛擬環境名稱
執行后,在本地會生成一個與虛擬環境同名的文件夾,包含 Python 可執行文件和 pip 庫的拷貝,可用於安裝其他包。
但是默認情況下,虛擬環境中不會包含也無法使用系統環境的global site-packages。比如系統環境里安裝了 requests 模塊,在虛擬環境里import requests
會提示ImportError
。如果想使用系統環境的第三方軟件包,可以在創建虛擬環境時使用參數–system-site-packages
。
virtualenv --system-site-packages venv
另外,你還可以自己指定虛擬環境所使用的 Python 版本,但前提是系統中已經安裝了該版本:
virtualenv -p /usr/bin/python2.7 venv
使用虛擬環境
進入虛擬環境目錄,啟動虛擬環境。
cd venv source bin/activate # Windows 系統下運行 Scripts\ python -V
如果未對命令行進行個性化,此時命令行前面應該會多出一個括號,括號里為虛擬環境的名稱。啟動虛擬環境后安裝的所有模塊都會安裝到該虛擬環境目錄里。
退出虛擬環境:
deactivate
如果項目開發完成后想刪除虛擬環境,直接刪除虛擬環境目錄即可。
如果安裝的時候沒有bin目錄:
Virtualenv在執行虛擬環境建立后沒有bin目錄的處理
使用環境:
window 7 64位
python 3.5.1
virtualenv 15.1.0
正常安裝virtualenv:
pip install virtualenv
建立第一個虛擬環境
virtualenv env
發現虛擬目錄中只有四個目錄和一個文件,沒有bin目錄
\Include
\lib
\Scripts
\tcl
pip-selfcheck
經過檢查,發現啟動虛擬環境的需要的命令都在\Scripts中,如下:
├─Scripts
│ activate
│ activate.bat
│ activate.ps1
│ activate_this.py
│ deactivate.bat
│ easy_install-3.5.exe
│ easy_install.exe
│ pip.exe
│ pip3.5.exe
│ pip3.exe
│ python.exe
│ python35.dll
│ pythonw.exe
│ wheel.exe
因為沒有bin目錄,所以不能執行 source .\bin\activate 命令激活虛擬環境。
經過實驗,可以在虛擬環境目錄內執行下方命令啟動虛擬環境
.\scripts\activate.bat
關閉虛擬環境需要執行下方的命令
.\scripts\deactivat.bat
使用visualenv與anaconda的區別:
使用visualenv前提條件是,Python以及pip事先已經存在了,而使用anaconda是不需要安裝python和pip的,因為annaconda都涵蓋了。
另外,有些時候因為權限什么的,直接使用pip 或者在visualenv中安裝包報錯的情況下,不如直接使用anaconda,因為里面涵蓋了很多wheel,直接pip install XX 或者conda install XX即可
anaconda常用命令
1、查看已安裝的包
conda list
2、更新所有包
conda upgrade --all
3、安裝包
conda install package_name
4、刪除包
conda remove package_name
5、更新包
conda update package_name
6、不知道包名要找包
conda search name
7、用conda建立虛擬環境
conda create -n env_name list_of_packages
其中 -n 代表 name,env_name 是需要創建的環境名稱,list of packages 則是列出在新環境中需要安裝的工具包。
例如,當我安裝了 Python3 版本的 Anaconda 后,默認的 root 環境自然是 Python3,但是我還需要創建一個 Python 2 的環境來運行舊版本的 Python 代碼,最好還安裝了 pandas 包,於是我們運行以下命令來創建:
conda create -n py2 python=2.7 pandas
細心的你一定會發現,py2 環境中不僅安裝了 pandas,還安裝了 numpy 等一系列 packages,這就是使用 conda 的方便之處,它會自動為你安裝相應的依賴包,而不需要你一個個手動安裝。
8、進入虛擬環境
source activate env_name
9、退出虛擬環境
source deactivate
10、刪除名為 env_name 的環境
conda env remove -n env_name
11、顯示所有的環境:
conda env list
12、當分享代碼的時候,同時也需要將運行環境分享給大家,執行如下命令可以將當前環境下的 package 信息存入名為 environment 的 YAML 文件中
conda env export > environment.yaml
13、使用別人生成的yaml文件創建環境
conda env create -f environment.yaml
作者:喔蕾喔蕾喔蕾蕾蕾
鏈接:https://www.jianshu.com/p/6d7de7a00b8d
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。