轉載自:https://zhuanlan.zhihu.com/p/60647332
寫在前面
關於Python虛擬環境管理,曾經做為一名新人一直不以為意,心想反正都是我要用的庫,全安裝在一起,要用直接導入,多好。可是,后來,懂得越來越多的我,不僅流下了悔恨了淚水呀,這一次,關於Python虛擬環境管理的方法一網打盡,喜歡哪種方式,大家自己選吧。再說一次虛擬環境很重要。
一、直接用python命令
python -m venv [虛擬環境名稱]
進入到要創建虛擬環境目錄,執行上面的命令,會自動在當前目錄下創建對應虛擬環境,虛擬環境的激活等操作同下面的方法
二、使用virtualenv
1. 使用pip
pip install virtualenv
2. 創建運行環境
virtualenv [虛擬環境名稱]
virtualenv venv
#如果不想使用系統的包,加上–no-site-packeages參數
virtualenv --no-site-packages 創建路徑名
# 指定python版本,需要提前安裝對應python版本
virtualenv test --python=python3.7
3. 激活環境(下一次想進入虛擬環境也是此通過步驟)
linux:
$ cd venv
$ source ./bin/activate
Windows 10:
> cd venv
> .\Scripts\activate.bat
4. 退出環境
linux:
$ deactivate
Windows 10:
> .\Scripts\deactivate.bat
5. 刪除環境
沒有使用virtualenvwrapper前,可以直接刪除venv文件夾來刪除環境
6. 使用環境
進入環境后,一切操作和正常使用python一樣 安裝包使用pip install 包
三、使用Virtualenvwrapper
Virtaulenvwrapper是virtualenv的擴展包,用於更方便管理虛擬環境,它可以做: - 將所有虛擬環境整合在一個目錄下 - 管理(新增,刪除,復制)虛擬環境 - 快速切換虛擬環境
1. 安裝
# on Windows
pip install virtualenvwrapper-win
# on macOS / Linux
pip install --user virtualenvwrapper
# then make Bash load virtualenvwrapper automatically
echo "source virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc
2. 創建虛擬環境
# on macOS/Linux:
mkvirtualenv --python=python3.6 venv
# on Windows
mkvirtualenv --python=python3 venv
3. 激活環境
workon #列出虛擬環境列表
workon [venv] #切換環境
4. 退出環境
deactivate
5. 刪除環境
rmvirtualenv venv
6. 其他有用指令
pip freeze #查看當前安裝庫版本
#創建 requirements.txt 文件,其中包含了當前環境中所有包及 各自的版本的簡單列表
#保持部署相同,一鍵安裝所有包
pip install -r requirements.txt
pip freeze > requirements.txt
lsvirtualenv #列舉所有的環境
cdvirtualenv #導航到當前激活的虛擬環境的目錄中,相當於pushd 目錄
cdsitepackages # 和上面的類似,直接進入到 site-packages 目錄
lssitepackages #顯示 site-packages 目錄中的內容
四、 使用conda管理
conda可以直接創建不同python版本的虛擬環境。前面講的virtualenv只是指定創建不同python版本的虛擬環境,前提是你的電腦上已經安裝了不同版本的python,與conda相比沒有conda靈活。
1. 安裝
下載anaconda安裝的python直接可以使用conda工具
2. 創建虛擬環境
創建不同的python版本,直接寫出版本號就好了,還可以同時安裝想要的庫。
# Python 2.7
$ conda create -n venv python=2.7
# Python 3.4
$ conda create -n venv python=3.4
# Python 3.5
$ conda create -n venv python=3.5
3. 激活虛擬環境
#on windows
activate venv
#on linux
source activate venv
4. 退出虛擬環境
#on windows
deactivate
#on linux
source deactivate
5. 刪除虛擬環境
# 刪除一個已有環境
conda remove --name venv --all
6. 其他有用指令
# 列出系統存在虛擬環境
conda info -e
conda env list
# 查看當前環境下已安裝的包
conda list
# 查看某個指定環境的已安裝包
conda list -n venv
# 查找package信息
conda search numpy
# 安裝package
conda install -n venv numpy
# 如果不用-n指定環境名稱,則被安裝在當前激活環境
# 也可以通過-c指定通過某個channel安裝
# 更新package
conda update -n venv numpy
# 刪除package
conda remove -n venv numpy
五. 使用pipenv管理
pipenv是Python官方推薦的包管理工具。 它綜合了 virtualenv , pip 和 pyenv 三者的功能。能夠自動為項目創建和管理虛擬環境。如果你使用過requests庫,就一定會愛上這個庫,因為是同一個大神出品。 pipenv使用 Pipfile 和 Pipfile.lock 來管理依賴包,並且在使用pipenv添加或刪除包時,自動維護 Pipfile 文件,同時生成 Pipfile.lock 來鎖定安裝包的版本和依賴信息,避免構建錯誤。相比pip需要手動維護requirements.txt 中的安裝包和版本,具有很大的進步。
1. 安裝
pip install pipenv
2. 創建虛擬環境
$ cd myproject
$ pipenv install # 創建環境
$ pipenv install requests # 或者直接安裝庫
如果不存在pipfile,會生成一個pipfile,並且如果有的庫添加會自動編輯該文件,不會我們手動更新requirements.txt文件了。
3. 激活Pipenv Shell
$ pipenv shell
$ python --version