python虚拟环境之virtualenv
Whisper Lv4

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
3
$ sudo easy_install virtualenv
````
或更高级的

$ sudo pip install virtualenv

1
2

Ubuntu:

$ sudo apt-get install python-virtualenv

1
2
3
4
5
6
7
8


# 创建Python虚拟环境

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

使用命令:

$ virtualenv 环境名称

1
2
3
4
5
6
7
8

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

# 使用


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

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

现在在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和它的依赖集都会安装到虚拟环境中。)

(venv)$ pip install flask

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

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
2

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

(venv)$ pip install -r requirements.txt

1
2

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

(venv)$ pip freeze

1
2
3
4
5
6
7
8
9
10
11
12

# 切换Python版本
`pip install virtualenvwrapper`


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

# 删除环境

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

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



# 使用pycharm给不同项目指定不同的Virtualenv
file->setting->project interpreter
选择已经创建好的,或者新建一个。