1. virtualenv概述
virtualenv
通过创建独立Python开发环境的工具,来解决依赖、版本以及间接权限问题。比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7,版本跨度过大, 导致不兼容使项目无法正在运行,使用virtualenv可以解决这些问题。
virtualenv
创建一个拥有自己安装目录的环境,这个环境不与其他虚拟环境共享库, 能够方便的管理python版本和管理python库。
2. 安装Virtualenv
virtualenv
通过创建独立Python开发环境的工具,来解决依赖、版本以及间接权限问题。比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7,版本跨度过大, 导致不兼容使项目无法正在运行,使用virtualenv可以解决这些问题。
virtualenv
创建一个拥有自己安装目录的环境,这个环境不与其他虚拟环境共享库, 能够方便的管理python版本和管理python库。
使用pip
安装Virtualenv
$ pip install virtualenv
$ sudo pip install virtualenv #或者由于权限问题使用sudo临时提升权限
3. virtualenv基本使用
3.1 使用virtualenv创建python环境
$ virtualenv test #创建一个名为test的目录,并且安装了bin/python和bin/pip,创建了lib,include,bin目录
Using base prefix '/usr'
New python executable in /home/zhangchengfei/test/bin/python3
Also creating executable in /home/zhangchengfei/test/bin/python
Installing setuptools, pip, wheel...done.
$ cd test
$ ll
drwxrwxr-x 2 zhangchengfei zhangchengfei 4096 5月 24 19:37 bin/
drwxrwxr-x 2 zhangchengfei zhangchengfei 4096 5月 24 19:37 include/
drwxrwxr-x 3 zhangchengfei zhangchengfei 4096 5月 24 19:37 lib/
-rw-rw-r-- 1 zhangchengfei zhangchengfei 60 5月 24 19:37 pip-selfcheck.json
lib
,所有安装的python库都会放在这个目录中的lib/pythonx.x/site-packages/下
bin
,bin/python是在当前环境是使用的python解释器
$ virtualenv test #创建一个名为test的目录,并且安装了bin/python和bin/pip,创建了lib,include,bin目录
Using base prefix '/usr'
New python executable in /home/zhangchengfei/test/bin/python3
Also creating executable in /home/zhangchengfei/test/bin/python
Installing setuptools, pip, wheel...done.
$ cd test
$ ll
drwxrwxr-x 2 zhangchengfei zhangchengfei 4096 5月 24 19:37 bin/
drwxrwxr-x 2 zhangchengfei zhangchengfei 4096 5月 24 19:37 include/
drwxrwxr-x 3 zhangchengfei zhangchengfei 4096 5月 24 19:37 lib/
-rw-rw-r-- 1 zhangchengfei zhangchengfei 60 5月 24 19:37 pip-selfcheck.json
lib
,所有安装的python库都会放在这个目录中的lib/pythonx.x/site-packages/下bin
,bin/python是在当前环境是使用的python解释器
如果在命令行中运行virtualenv --system-site-packages test
,会继承/usr/lib/python2.7/site-packages
下的所有库,最新版本virtualenv把访问全局site-packages作为默认行为。
3.2 激活virtualenv
-
test目录下使用如下命令
$ source ./bin/activate # 激活当前virtualenv
(test) $ # 注意终端发生了变化
-
使用pip
查看当前库,显示依赖并生成requirement文件
(test) $ pip list
pip (8.1.2)
setuptools (21.2.1)
wheel (0.29.0) # 现在只有这三个
pip freeze # 显示所有依赖
pip freeze > requirement.txt # 生成requirement.txt文件
pip install -r requirement.txt # 根据requirement.txt生成相同的环境
3.3 关闭virtualenv
-
使用下面命令
$ deactivate
3.4 指定python版本
-
可以使用-p PYTHON_EXE
选项在创建虚拟环境的时候指定python版本
# 创建python2.7虚拟环境
$ virtualenv -p /usr/bin/python2.7 test
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /home/zhangchengfei/test/bin/python2.7
Not overwriting existing python script /home/zhangchengfei/test/bin/python (you must use /home/zhangchengfei/test/bin/python2.7)
Installing setuptools, pip, wheel...done.
# 创建python3.4虚拟环境
$ virtualenv -p /usr/local/bin/python3.4 test
Running virtualenv with interpreter /usr/bin/python3.4
Using base prefix '/usr'
New python executable in /home/zhangchengfei/test/bin/python3.4
Also creating executable in /home/zhangchengfei/test/bin/python
Installing setuptools, pip, wheel...done.
4. 生成可打包环境
-
某些特殊需求下,可能没有网络,我们期望直接打包一个test,可以解压后直接使用,这时候可以使用virtualenv -relocatable
指令将test修改为可更改位置的test
# 对当前已经创建的虚拟环境更改为可迁移
[test]$ virtualenv --relocatable ./
Making script /home/zhangchengfei/test/bin/wheel relative
Making script /home/zhangchengfei/test/bin/pip3 relative
Making script /home/zhangchengfei/test/bin/pip relative
Making script /home/zhangchengfei/test/bin/easy_install-3.4 relative
Making script /home/zhangchengfei/test/bin/pip3.4 relative
Making script /home/zhangchengfei/test/bin/python-config relative
Making script /home/zhangchengfei/test/bin/easy_install relative
test目录下使用如下命令
$ source ./bin/activate # 激活当前virtualenv
(test) $ # 注意终端发生了变化
使用pip
查看当前库,显示依赖并生成requirement文件
(test) $ pip list
pip (8.1.2)
setuptools (21.2.1)
wheel (0.29.0) # 现在只有这三个
pip freeze # 显示所有依赖
pip freeze > requirement.txt # 生成requirement.txt文件
pip install -r requirement.txt # 根据requirement.txt生成相同的环境
-
使用下面命令
$ deactivate
3.4 指定python版本
-
可以使用-p PYTHON_EXE
选项在创建虚拟环境的时候指定python版本
# 创建python2.7虚拟环境
$ virtualenv -p /usr/bin/python2.7 test
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /home/zhangchengfei/test/bin/python2.7
Not overwriting existing python script /home/zhangchengfei/test/bin/python (you must use /home/zhangchengfei/test/bin/python2.7)
Installing setuptools, pip, wheel...done.
# 创建python3.4虚拟环境
$ virtualenv -p /usr/local/bin/python3.4 test
Running virtualenv with interpreter /usr/bin/python3.4
Using base prefix '/usr'
New python executable in /home/zhangchengfei/test/bin/python3.4
Also creating executable in /home/zhangchengfei/test/bin/python
Installing setuptools, pip, wheel...done.
4. 生成可打包环境
-
某些特殊需求下,可能没有网络,我们期望直接打包一个test,可以解压后直接使用,这时候可以使用virtualenv -relocatable
指令将test修改为可更改位置的test
# 对当前已经创建的虚拟环境更改为可迁移
[test]$ virtualenv --relocatable ./
Making script /home/zhangchengfei/test/bin/wheel relative
Making script /home/zhangchengfei/test/bin/pip3 relative
Making script /home/zhangchengfei/test/bin/pip relative
Making script /home/zhangchengfei/test/bin/easy_install-3.4 relative
Making script /home/zhangchengfei/test/bin/pip3.4 relative
Making script /home/zhangchengfei/test/bin/python-config relative
Making script /home/zhangchengfei/test/bin/easy_install relative
可以使用-p PYTHON_EXE
选项在创建虚拟环境的时候指定python版本
# 创建python2.7虚拟环境
$ virtualenv -p /usr/bin/python2.7 test
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /home/zhangchengfei/test/bin/python2.7
Not overwriting existing python script /home/zhangchengfei/test/bin/python (you must use /home/zhangchengfei/test/bin/python2.7)
Installing setuptools, pip, wheel...done.
# 创建python3.4虚拟环境
$ virtualenv -p /usr/local/bin/python3.4 test
Running virtualenv with interpreter /usr/bin/python3.4
Using base prefix '/usr'
New python executable in /home/zhangchengfei/test/bin/python3.4
Also creating executable in /home/zhangchengfei/test/bin/python
Installing setuptools, pip, wheel...done.
-
某些特殊需求下,可能没有网络,我们期望直接打包一个test,可以解压后直接使用,这时候可以使用
virtualenv -relocatable
指令将test修改为可更改位置的test# 对当前已经创建的虚拟环境更改为可迁移 [test]$ virtualenv --relocatable ./ Making script /home/zhangchengfei/test/bin/wheel relative Making script /home/zhangchengfei/test/bin/pip3 relative Making script /home/zhangchengfei/test/bin/pip relative Making script /home/zhangchengfei/test/bin/easy_install-3.4 relative Making script /home/zhangchengfei/test/bin/pip3.4 relative Making script /home/zhangchengfei/test/bin/python-config relative Making script /home/zhangchengfei/test/bin/easy_install relative
【完】
Virtualenv创建虚拟环境安装Flask http://www.linuxidc.com/Linux/2016-04/130196.htm
Python 虚拟环境:Virtualenv http://www.linuxidc.com/Linux/2015-08/121354.htm
CentOS6.5下使用Virtualenv搭建Python3开发环境 http://www.linuxidc.com/Linux/2015-08/121352.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/132855.htm