Python - Virtualenv
Reference: Virtualenv
安装
1 | pip install virtualenv |
创建虚拟环境
1 | virtualenv ENV |
ENV
: 需要创建的虚拟环境的路径。ENV
可以是全局路径,也可以是相对路径。
以上命令创建的 Python 虚拟环境是没有从系统的 Python 中继承任何 Python 库的,是一个新的 Python 环境。其它选项:
-p PYTHON_EXE
,--python=PYTHON_EXE
默认创建的虚拟环境的 Python 版本是系统默认的 Python,但是可以通过添加该选项来指定虚拟环境的 Python 版本(前提是系统已有的 Python 版本)。1
2
3virtualenv -p python3.5 ENV
# or
virtualenv --python=python3.5 ENV--system-site-packages
默认创建的虚拟环境是没有继承任何 Python 库的,如果需要继承系统默认 Python 的库,可以添加该选项:1
virtualenv --system-site-packages ENV
--always-copy
默认情况下,创建虚拟环境需要的文件很多都是从系统软连接过来使用的。如果想要直接复制那些文件到虚拟环境而不是使用软连接,可以添加该选项:1
virutalenv --always-copy ENV
更多参数选项可以参考 virtualenv,或
virtualenv --help
。
激活虚拟环境
激活虚拟环境,只需要 source
虚拟环境 ENV/bin/activate
。如,虚拟环境目录为 /var/virtualenvs/scanner/
,当前路径为 /home/lizs/
:1
2cd /var/virtualenvs/scanner/
source bin/activate
或1
source /var/virtualenvs/scanner/bin/activate
成功激活之后,当前命令窗口的 python 就处于一个独立的虚拟环境的。pip freeze
可以看到当前的虚拟环境是没有安装任何 Python 的库的。
注意:在虚拟环境下,如果安装时候需要sudo
权限 (如,sudo pip install Django
),virtualenv 是获取不到sudo
权限的。即,用sudo
提权时,执行的命令不再在当前虚拟环境。那么,当在 virtualenv 虚拟环境下需要sudo
权限安装的时候要怎么做呢?可以这样做:1
sudo $(which pip) install Django
执行 which pip
的时候还是在当前虚拟环境下,sudo
加命令的绝对路径安装就会自动安装到当前虚拟环境下了。
退出激活状态
如果想要退出激活状态的虚拟环境,可以执行:1
deactivate
在非激活状态使用虚拟环境
使用虚拟环境的 python 和相应的库
如果,想要在非激活状态使用用虚拟环境的 Python 执行 Python 文件,可以指定 Python 解析器的路径为/path/to/ENV/bin/python
。使用全局环境的 python,并且添加虚拟环境中的 python 库
在 python 环境下,或执行文件中添加以下内容:1
2activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
删除虚拟环境
删除虚拟环境,非激活状态下直接删除虚拟环境下的文件即可:1
rm -r ENV