参考链接:如何使用 virtualenv 创建 Python 虚拟环境?
Python虚拟环境virtualenv安装保姆级教程(Windows和linux)
virtualenv和virtualenvwrapper使用教程
1. virtualenv
由于 virtualenvwrapper 是 virtualenv 的一组扩展,所以如果要使用 virtualenvwrapper,就必须先安装 virtualenv。
安装
pip install virtualenv
# 检查版本
virtualenv --version
由于virtualenv创建虚拟环境是在当前环境下创建的。所以我们要准备一个专门存放虚拟环境的目录。
# 准备目录并进入
mkdir -p /home/wangbm/Envs
cd !$
# 创建虚拟环境(按默认的Python版本)
# 执行完,当前目录下会有一个my_env01的目录
virtualenv my_env01
# 你也可以指定版本
virtualenv -p /usr/bin/python2.7 my_env01
virtualenv -p /usr/bin/python3.6 my_env02
# 你肯定觉得每次都要指定版本,相当麻烦吧?
# 在Linux下,你可以把这个选项写进入环境变量中
echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc
进入/退出
cd /home/wangbm/Envs
# 进入虚拟环境
source my_env01/bin/activate
# 退出虚拟环境
deactivate
删除
删除虚拟环境,只需删除对应的文件夹就行了。并不会影响全局的Python和其他环境。
cd /home/wangbm/Envs
rm -rf my_env01
注意: 创建的虚拟环境,不会包含原生全局环境的第三方包,其会保证新建虚拟环境的干净。
如果你需要和全局环境使用相同的第三方包。可以使用如下方法:
# 导出依赖包
pip freeze > requirements.txt
# 安装依赖包
pip install -r requirements.txt
2. virtualenvwrapper
virtualenv 虽然已经相当好用了,可是功能还是不够完善。
你可能也发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。
还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。
为了解决这两个问题,virtualenvwrapper就诞生了。
安装
pip install virtualenvwrapper
配置
先找到 virtualenvwrapper.sh 文件的位置
sudo find / -name virtualenvwrapper.sh
#(“/”代表从根目录下开始寻找)
# /usr/bin/virtualenvwrapper.sh 假设找到了在这个位置
在~/.bashrc 文件新增配置
export WORKON_HOME=/usr/virtualenvs
#(“WORKON_HOME”指的是虚拟环境的安装路径)
export PROJECT_HOME=$HOME/workspace
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
export VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.sh
source /usr/bin/virtualenvwrapper.sh
# 配置立即生效
source ~/.bashrc
常用方法
# 创建
mkvirtualenv my_env01
# 进入
workon my_env01
# 退出
deactivate
# 列出所有的虚拟环境,两种方法
workon
lsvirtualenv
# 在虚拟环境内直接切换到其他环境
workon my_env02
# 删除虚拟环境
rmvirtualenv my_env01
其他命令
# 列出帮助文档
virtualenvwrapper
# 拷贝虚拟环境
cpvirtualenv ENVNAME [TARGETENVNAME]
# 在所有的虚拟环境上执行命令
allvirtualenv pip install -U pip
# 删除当前环境的所有第三方包
wipeenv
# 进入到当前虚拟环境的目录
cdsitepackages
# 进入到当前虚拟环境的site-packages目录
cdvirtualenv
# 显示 site-packages 目录中的内容
lssitepackages