为什么需要虚拟环境
在没有使用虚拟环境之前, 我们安装第三方包都是通过 pip install xxx
的方式去安装的. 这种安装方式十分简单, 因为它是直接把包安装在你的系统级的python
环境中, 不需要我们对包进行管理.
但是这种简单的操作也引发了一些兼容性的问题. 如果你现在使用的是Django 1.10
开发新的项目, 但你的领导同时又让你维护Django 0.9
的旧项目, 而且Django 1.10
不再兼容Django 0.9
的一些语法了, 那是不是意味着你应该在你的系统级的python
环境中, 安装这两个版本的Django
包.
但事实是: python不允许在同一个环境中, 安装不同版本的相同包, 这时候我们该怎么办呢? 不用担心, 虚拟环境来帮你搞定在同一台电脑上维护不同环境的难题.
虚拟环境原理介绍
虚拟环境是用于依赖项管理和项目隔离的Python工具,允许Python站点包(第三方库)安装在本地特定项目的隔离目录中,而不是全局安装, 不同的虚拟环境之间不会互相影响. 我们也可以简单的把虚拟环境理解为抽屉, 在这个抽屉安装的所有第三方包, 都不影响其他抽屉的包. 并且在项目中,我们可以指定特定的虚拟环境来配合我们的项目。
那么上面说的问题是不是就迎刃而解了呢. 我只需在本地创建一个Django 1.10
的虚拟环境和一个Django 0.9
的虚拟环境, 就可以实现既维护老项目又开发新项目, 想想就觉得有点小激动呢.O(∩_∩)O
安装virtualenv
:
virtualenv
是用来创建虚拟环境的软件工具,我们可以通过pip
或者pip3
来安装:
1 | pip install virtualenv |
创建虚拟环境:
创建虚拟环境非常简单,通过以下命令就可以创建了:
1 | virtualenv [虚拟环境的名字] |
进入环境:
虚拟环境创建好了以后,那么可以进入到这个虚拟环境中,然后安装一些第三方包,进入虚拟环境在不同的操作系统中有不同的方式,一般分为两种,第一种是Windows
,第二种是*nix
:
windows
进入虚拟环境:进入到虚拟环境的Scripts
文件夹中,然后执行activate
。*nix
进入虚拟环境:source /path/to/virtualenv/bin/activate
PS: 一旦你进入到了这个虚拟环境中,你安装包,卸载包都是在这个虚拟环境中,不会影响到外面的环境(想一想抽屉, 因为你只在这个抽屉里进行操作, 当然不会影响到其他抽屉)。
退出虚拟环境:
退出虚拟环境很简单,通过一个命令就可以完成:deactivate
。
创建虚拟环境的时候指定Python
解释器:
由于python
的快速迭代, 导致一些新的语法, 只在特定版本以上的python解释器才可以运行, 如f-string
语法就只能在python3.6
以上的版本才可以使用. 如果你的本机同时安装了python3.5
和python3.6
的解释器的话, 那么你就可以在创建虚拟环境的时候指定特定的python解释器作为该虚拟环境的解释器.可以通过-p
参数来指定(你必须找到你的python安装路径).
1 | virtualenv -p python安装路径\python.exe [virutalenv name] |
virtualenvwrapper:
virtualenvwrapper
这个软件包可以让我们管理虚拟环境变得更加简单。
不用再跑到某个目录下通过virtualenv
来创建虚拟环境,通过activate
激活虚拟环境.
安装virtualenvwrapper
:
- *nix:
pip install virtualenvwrapper
- windows:
pip install virtualenvwrapper-win
使用virtualenvwrapper
:
创建虚拟环境:
1
mkvirtualenv my_env
那么会在你当前用户下创建一个
Env
的文件夹,然后将这个虚拟环境安装到这个目录下。
如果你电脑中安装了python2
和python3
,并且两个版本中都安装了virtualenvwrapper
,那么将会使用环境变量中第一个出现的Python
版本来作为这个虚拟环境的Python
解释器。切换到某个虚拟环境:
1
workon my_env
退出当前虚拟环境:
1
deactivate
删除某个虚拟环境:
1
rmvirtualenv my_env
列出所有虚拟环境:
1
lsvirtualenv
进入到虚拟环境所在的目录:
1
cdvirtualenv
修改mkvirtualenv
的默认路径(重要):
在我的电脑->右键->属性->高级系统设置->环境变量->系统变量
中添加一个参数WORKON_HOME
,将这个参数的值设置为你需要的路径。设置成功后,以后不管你在任何路径下创建的虚拟环境,都统一安装在你设置的路径下,这也给我们统一管理虚拟环境带来极大的方便。
创建虚拟环境的时候指定Python
版本:
在使用mkvirtualenv
的时候,可以指定--python
的参数来指定具体的python
路径:
1 | mkvirtualenv --python==C:\Python36\python.exe hy_env |