Python虚拟环境

python虚拟环境就是让不同的项目有不同的工作环境, 每个项目可以有不同版本的依赖包,而且不同的信赖之间相互隔离. 比如, 项目A依赖package version 1.x 而项目B依赖package version 4.x, 我们就可以创建两个虚拟环境, 分别装上package version 1.x 和4.x就可以了.

virtualenv

vitualenv可以创建隔离的Python环境. 在使用virtualenv时, 它会创建一个目录包含所有的本虚拟环境运行所需要的可执行文件,

通过pip安装virtualenv:

$ pip install virtualenv

检查安装的版本:

$ virtualenv --version

基本用法:

1.为项目创建一个虚拟环境

$ cd project_floder   # 打开虚拟环境文件夹放置的地方

$ virtualenv my_project   # 会在当前文件夹下创建一个文件夹, 该文件夹下包含Python的可执行文件, 以及一个pip库可以用来安装其安的包. 虚拟环境的名字(在这个例子中, 是my_project, 就是virtualenv后面的文件夹的名字) 可以是任意的.

在创建时可以指定不同的Python解释器的版本:

$ virtualenv -p /usr/bin/python2.7 my_project

或者在~/.bashrc中声明变量VIRTUALENVWRAPPER_PYTHON更改全局的PYthon解释器:

$ export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7

2.激活虚拟环境

$ source my_project/bin/activate

(my_project) [root@localhost venv]# 

激活以后当前虚拟环境的名字会显示在最左边的括号里面(如上面所示). 以后再安装的包就会装在my_project

文件夹下, 而不会和全局的python混淆.

安装package

(my_project) [root@localhost venv]# pip install package

3.工作完毕后就可以deactivate.

(my_project) [root@localhost venv]# deactivate

4.删除一个虚拟环境, 仅需要删除文件夹(my_project)即可.

# rm -rf my_project

列出所有创建的虚拟环境:

# virtualenv list 

virtualenvwrapper

virtualenvwrapper是virtualenv的一个扩展. virtualenvwrapper可以让创建和管理虚拟环境更加的简单. 当然它也是将所有的虚拟环境需要的文件放在同一个文件夹下.

为了安装virtualenvwrapper首先要安装virtualenv.而且在使用需要执行, source /usr/bin/virtualenvwrapper.sh, 也可以将上述命令添加到~/.bashrc中.

$ pip install virtualenvwrapper
$ export WORKON_HOME=~/Envs
$ source /usr/local/bin/virtualenvwrapper.sh

用法:

1.创建虚拟环境:

# mkvirtualenv my_project

New python executable in my_project/bin/python

Installing Setuptools........................................................................................................................done.

Installing Pip.....................................................................................................................................done.

virtualenvwrapper.user_scripts creating /home/test/.virtualenvs/my_project/bin/predeactivate

virtualenvwrapper.user_scripts creating /home/test/.virtualenvs/my_project/bin/postdeactivate

virtualenvwrapper.user_scripts creating /home/test/.virtualenvs/my_project/bin/preactivate

virtualenvwrapper.user_scripts creating /home/test/.virtualenvs/my_project/bin/postactivate

virtualenvwrapper.user_scripts creating /home/test/.virtualenvs/my_project/bin/get_env_details
(my_project) [root@localhost ~]# 

创建完成以后, 会直接进入到虚拟环境my_project.
注意:如果没有export WORKON_HOME默认路径在~/.virtualenvs/下.
2. 安装软件包与virtualenv下相同.

(my_project) [root@localhost ~]# pip install django
Collecting django
  Downloading Django-1.11.2-py2.py3-none-any.whl (6.9MB)
    100% |████████████████████████████████| 7.0MB 82kB/s 
Collecting pytz (from django)
  Using cached pytz-2017.2-py2.py3-none-any.whl
Installing collected packages: pytz, django
Successfully installed django-1.11.2 pytz-2017.2
  1. 使用lssitepackages列出已安装的软件包.
(my_project) [root@localhost ~]# lssitepackages 
django                   pip                  pytz-2017.2.dist-info        wheel-0.29.0.dist-info
Django-1.11.2.dist-info  pip-9.0.1.dist-info  setuptools
easy_install.py          pkg_resources        setuptools-36.0.1.dist-info
easy_install.pyc         pytz                 wheel
  1. 使用workon在不同的虚拟环境下切换.
# 创建虚拟环境my_project2
(my_project) [root@localhost ~]# mkvirtualenv my_project2
New python executable in /root/.virtualenvs/my_project2/bin/python2
Also creating executable in /root/.virtualenvs/my_project2/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /root/.virtualenvs/my_project2/bin/predeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/my_project2/bin/postdeactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/my_project2/bin/preactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/my_project2/bin/postactivate
virtualenvwrapper.user_scripts creating /root/.virtualenvs/my_project2/bin/get_env_details
(my_project2) [root@localhost ~]#
# 可以看到在创建完my_project2时, 已经切换进去, 然后我们重新切换到my_project
(my_project2) [root@localhost ~]# workon my_project
(my_project) [root@localhost ~]#
# workon还可以列出已创建的虚拟环境
(my_project) [root@localhost ~]# workon 
my_project2
my_project

注意:virtualenvwrapper提供tab补全功能. 当你创建了许多虚拟环境, 而又无法全部记住它们的名字的时候会非常有用.
5.关闭虚拟环境

$ deactivate

6.删除虚拟环境

$ rmvirtualenv my_project
Removing my_project...

参考
1.Virtual Environmentshttp://python-guide-pt-br.readthedocs.io/en/latest/dev/virtualenvs/
2.https://virtualenvwrapper.readthedocs.io/en/latest/index.html

posted @ 2017-06-18 02:21  一忘如故  阅读(251)  评论(0编辑  收藏  举报