前段时间为了部署网站上线,买了阿里云的服务器。不过选择ubuntu系统自带的是pyhton2.7版本。想在原有的系统上增加一个python3.5系统,于是准备用virtualenv创建虚拟环境进行安装。
virtualenv是什么?
virtualenv是一个创建隔绝的Python环境的工具。
为什么要创建虚拟环境?
它解决了“项目X依赖于版本1.x,而项目Y需要项目4.x”的两难问题,而且使你的全局site-packages目录保持干净和可管理。
安装步骤
pip install virtualenv
用法
创建虚拟环境
virtualenv ENV
New python executable in
Installing setuptools, pip...done.
# 创建一个名为ENV的目录
# 安装了ENV/bin/python
# 创建了lib,include,bin目录,安装了pip
安装指定的python版本
$ virtualenv -p /usr/bin/python2.7 环境名
virtualenv -p /usr/bin/python3 环境名
或
virtualenv -p python3 环境名称
# 不指定版本则使用系统默认版本
virtualenv命令参数
$ virtualenv [OPTIONS] DEST_DIR
选项:
--version 显示当前版本号。
-h, --help 显示帮助信息。
-v, --verbose 显示详细信息。
-q, --quiet 不显示详细信息。
-p PYTHON_EXE 指定所用的python解析器的版本
比如 --python=python2.5 就使用2.5版本的解析器创建新的隔离环境。
默认使用的是当前系统安装(/usr/bin/python)的python解析器
--clear 清空非root用户的安装,并重头开始创建隔离环境。
--no-site-packages 默认,令隔离环境不能访问系统全局的site-packages目录。
--system-site-packages 令隔离环境可以访问系统全局的site-packages目录。
激活虚拟环境
cd venv
source bin/activate # Windows 系统下运行 Scripts\
# 出现(venv)前缀,当前环境切换为venv
退出虚拟环境
$ deactivate
实用技巧
记录安装的第三方模块
pip freeze > requirements.txt
# 若无重定向则直接打印出来
安装txt文件里所记录的所有第三方模块
pip install -r requirements.txt
virtualenv 原理
把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。
参考文档:
[1] virtualenv 中文文档1.7
[2] Python指南 Virtualenv
[3] 廖雪峰Python教程 virtualenv库