万物之中, 希望至美.

Python虚拟环境Virtualenv和Virtualenvwrapper搭建

2018.02.24

virtualenv 是一个创建隔绝的Python环境的 Python 包。当我们遇到几个项目依赖不同版本的包的时候,如:项目A需要 Django 1.10 版本,项目B需要 Django 1.11 版本,这时就可以使用 virtualenv 来解决这个问题。

Virtualenv

安装virtualenv

pip install virtualenv

使用方法

mkdir your_project_folder
cd your_project_folder
virtualenv env 		# env是你的虚拟环境名称

此时会建立一个带有系统 Python 环境中所有第三方包的 Python 运行环境,若不想带有这些第三方包,命令中加上--no-site-packages这个参数,就可以得到一个不带有任何第三包的“纯净”的 Python 运行环境。

virtualenv --no-site-packages [虚拟环境名]

并且,在创建虚拟 Python 运行环境时,还可以通过-p参数指定 Python 解释器:

virtualenv -p /usr/bin/python3 [虚拟环境名]

激活虚拟环境

source env/bin/activate

运行此命令后,会发现命令提示符前多了一个(env)的前缀,这表明当前环境是一个名为 env 的 Python 运行环境。

退出虚拟环境

deactivate

若不想要该虚拟运行环境了,直接使用rm -rf [虚拟环境名]命令删除即可(简单粗暴)。

Virtualenvwrapper

virtualenvwrapper 是 virtualenv 的扩展管理包,virtualenvwrapper提供了一系列命令让虚拟环境在使用时变得愉快许多,它把您所有的虚拟环境都放在一个地方。

安装

pip install virtualenvwrapper

安装完成后,还需要运行 virtualenvwrapper.sh 文件才使用 virtualenvwrapper,该文件通常情况下是在/usr/local/bin/目录下,但有时发生意外情况就需要查找该文件了:

find / -name virtualenvwrapper.sh

该文件中写有安装步骤,按照步骤把环境设置好即可。

# Setup:
#
#  1. Create a directory to hold the virtual environments.
#     (mkdir $HOME/.virtualenvs).
#  2. Add a line like "export WORKON_HOME=$HOME/.virtualenvs"
#     to your .bashrc.
#  3. Add a line like "source /path/to/this/file/virtualenvwrapper.sh"
#     to your .bashrc.
#  4. Run: source ~/.bashrc
#  5. Run: workon
#  6. A list of environments, empty, is printed.
#  7. Run: mkvirtualenv temp
#  8. Run: workon
#  9. This time, the "temp" environment is included.
# 10. Run: workon temp
# 11. The virtual environment is activated.

首先是创建一个目录来存放未来创建的所有虚拟环境:

mkdir $HOME/.virtualenvs # 目录名随意,这里用的是.virtualenvs

.bashrc(bash) 或者.zshrc(zsh),根据使用的shell来定,添加:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 # 设置虚拟环境默认Python解释器版本,可省略
source /path/to/this/file/virtualenvwrapper.sh

激活 shell 配置文件:

source .bashrc 或者 source .zshrc

使用

查看虚拟环境列表

workon 或者 lsvirtualenv

创建虚拟环境

mkvirtualenv [虚拟环境名]

启动/切换虚拟环境

workon [虚拟环境名]

删除虚拟环境

rmvirtualenv [虚拟环境名]

退出虚拟环境

deactivate
comments powered by Disqus