logo头像

python虚拟环境之virtualenv

Virtualenv

  1. VirtualEnv是用于隔离不同版本的python包。
  2. VirtualEnv用于在一台机器上创建多个独立的Python虚拟运行环境,多个Python环境相互独立,互不影响,它能够:
    • 在没有权限的情况下安装新套件
    • 不同应用可以使用不同的套件版本
    • 套件升级不影响其他应用
    • 防止系统出现包管理混乱和版本冲突的问题

安装

在安装virtualenv之前,我们需要安装至少有一个版本的python;因为virtualenv是python的一个第三方模块,必须基于python环境才能安装;

Windows:
如果你的python环境有pip,那么直接使用命令:pip install virtualenv 安装即可;也可下载源码,然后使用命令:python install setup.py 来安装

Mac OS X 或 Linux:

1
2
$ sudo easy_install virtualenv
`

或更高级的

1
$ sudo pip install virtualenv

Ubuntu:

1
$ sudo apt-get install python-virtualenv

创建Python虚拟环境

同个项目中使用不同版本的python或者python依赖包时,使用虚拟环境会使各个版本互相不影响。

使用命令:

1
$ virtualenv 环境名称

参数:虚拟环境的名称,指定名称的文件夹,与虚拟环境相关的所有文件会在当前目录下被创建。

使用

我通常创建一个包含 venv 文件夹的项目文件夹myproject:

1
2
3
4
5
6
F:\mkdir myproject
F:\cd myproject
F:\pyproject>virtualenv venv
Using base prefix 'e:\\python35-32'
New python executable in F:\pyproject\venv\Scripts\python.exe
Installing setuptools, pip, wheel...done.

现在在F->myproject有一个venv文件夹和一个全新的虚拟环境,包含一个私有的Python解释器。

–no-site-packages选项
默认情况下,虚拟环境会继承全局Python中的包, 就是说你已经安装好全局的第三方package也会安装在虚拟环境中,如果不想继承这些package,那么可以加上参数 : --no-site-packages

–system-site-packages选项
添加该选项,虚拟环境会继承全局Python中的包, 就是说你已经安装好全局的第三方package也会安装在虚拟环境中

激活环境安装包

每次需要使用项目时,必须先激活相应的环境(进入到该虚拟目录)

OS X 和 Linux :$ . venv/bin/activate

Windows :$ venv\scripts\activate

你激活了虚拟环境,该激活命令会将环境的名称包含在命令提示符里面:(venv)$

pip安装python包

大多数的Python包是通过 pip 程序安装的,在创建虚拟环境的时候virtualenv会自动添加进去。
当一个虚拟环境被激活后,pip程序的位置会被添加到 PATH 中。

单个安装包

如:安装Flask到虚拟环境中,使用下面的命令:(通过这个命令,Flask和它的依赖集都会安装到虚拟环境中。)

1
(venv)$ pip install flask

批量安装包

如果需要安装的包比较多的时候,这样做会比较繁琐,我们还有一键安装的方法。首先新建一个文本文件,如:requirements.txt,然后将你需要安装的包名保存到该文件中(根据自己的需要),如下:

1
2
3
4
5
6
7
8
9
10
11
Babel==1.3
Flask==0.10.1
Flask-Login==0.2.7
Flask-SQLAlchemy==1.0
Flask-WTF==0.9.3
Jinja2==2.7.1
SQLAlchemy==0.8.2
WTForms==1.0.5
Werkzeug==0.9.4
psycopg2==2.5.1
...

输入以下命令,所有需要的包就可以全部安装好了:

1
(venv)$ pip install -r requirements.txt

查看当前环境安装了哪些包

1
(venv)$ pip freeze

切换Python版本

pip install virtualenvwrapper

回到全局Python解释器

当你在虚拟环境中完成工作并想回到全局Python解释器,在命令提示符中输入 deactivate 就可以了。

删除环境

删除环境的步骤:先deactivate当前环境,然后整个删除虚拟环境目录

1
2
(ENV)$ deactivate
$ rm -r /path/to/ENV

使用pycharm给不同项目指定不同的Virtualenv

file->setting->project interpreter
选择已经创建好的,或者新建一个。