Python 虚拟环境 virtualenv python虚拟环境--virtualenv 如何在pycharm中使用配置好的virtualenv环境

参考连接:python虚拟环境--virtualenv  python虚拟环境安装和配置  如何在pycharm中使用配置好的virtualenv环境html

virtualenv

  Python 今天咱们就不聊了。接下来我们说说virtualenv,英文比较好的同窗,可能已经猜到了一半,virtual,即:虚拟的。那env是什么鬼?environment吗?因此翻译成中文就是”虚拟环境“。
    到底什么是虚拟环境呢?顾名思义,它是一个虚拟出来的环境。通俗的来说,能够借助虚拟机,docker来理解虚拟环境,就是把一部份内容独立出来,咱们把这部分独立出来的东西称做“容器”,在这个容器中,咱们能够只安装咱们须要的依赖包,并且各个容器之间互相隔离,互不影响。咱们要学习Django,咱们经过这个环境搞一个Django的虚拟环境就行了。
【前提概要】
    Django也是一个很是流行的web框架。因为Django的迭代更新很是快,也比较频繁,因此有一些过期的东西须要丢弃掉,一些新的东西须要加进来,从而致使不一样的版本之间不兼容。好比Django1.三、Django1.四、Django1.8之间就有很大的差别性。
    或者是说,以Python的版本举例,如今工做中使用的Python版本与Python2.x和Python3.x两种。
【故事背景】
  假设要进行Python web开发,使用的是Django。手上还有两个老项目A和B须要维护,而新项目C也正在开发中。这里项目A使用的是django1.3,项目B使用的是django1.4,而新项目C使用的是Django1.8。那么问题来了,如何同时在本地进行ABC这三个项目的开发和维护?
正常的模式多是这样:如今在A项目上有一个BUG须要修复,因而,先执行下面的命令,删除掉原来的版本:python

pip uninstall django

而后再执行下面的命令安装django1.3web

pip install django==1.3

数分钟后,bug修复完毕,好,如今进行新项目C的开发了,而后又要重复上面的故事。
  好了,这仍是最理想的状况。最不理想的状况就是基于django的第三方依赖也是跟Django版本相关的,因而除了install和uninstall Django以外,还要uninstall和install其依赖,Orz,这特么的就尴尬了...docker

VirtualEnv能作什么呢?django

  VirtualEnv能够搭建虚拟且独立的python运行环境, 使得单个项目的运行环境与其它项目独立起来。同时也能够用于在一台机器上建立多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装。
  Virtualenv是一个很是好的virtual python environment builder,他最大的好处是,可让每个python项目单独使用一个环境,而不会影响python系统环境,也不会影响其余项目的环境。
  Virtualenv可用于建立独立的Python环境,在这些环境里面能够选择不一样的Python版本或者不一样的Packages,而且能够在没有root权限的状况下在环境里安装新套件,互相不会产生任何的影响。ubuntu

言归正传bash

安装,virtualenv本质上是个python包, 使用pip安装:app

pip install virtualenv

在工做目录下建立虚拟环境(默认在当前目录):注意须要自定义虚拟环境的名字!框架

~$virtualenv TestEnv
New python executable in ~/TestEnv/bin/python
Installing setuptools, pip, wheel...done.

默认状况下, 虚拟环境中不包括系统的site-packages, 若要使用请添加参数:python2.7

语法:virtualenv --system-site-packages TestEnv

使用virtualenv默认python版本建立虚拟环境

语法:virtualenv --no-site-packages ubuntu_env

就能够在当前目录建立一个env目录(虚拟环境名称,这个文件夹就是保存 Python 虚拟环境),你会注意到,virtualenv会把python,setuptools和pip给你安装上。

自定义python版本建立虚拟环境
  1. 安装须要版本的python
  2. 指定virtualenv中的python版本
      virtualenv --no-site-packages --python=2.7 env

Note:
  1. 建立virtualenv虚拟环境以前,系统中必需要安装有对应版本的python,而且卸载以后当前虚拟环境就无效了。系统中能够同时存在python2和python3,经过环境变量中的系统变量path(不是用户变量)控制cmd或者系统中使用哪一个版本的python,哪一个版本的路径在前面就优先使用哪一个版本。
  2. –no-site-packages表示不包括系统全局的Python安装包,这样会更令环境更干净
  3. –python=python2.7指定Python的版本未系统已经安装了的Python2.7
  4. env是创建的虚拟环境名称
  5. 没有安装python2.7或者使用命令virtualenv --no-site-packages --python=python2.7 env会出现The executable python does notexist 错误

注意: 

  安装的库的位置在虚拟环境的 env/Lib/site-packages/目录里,而不是在系统的python的Lib/site-packages目录里,这样你就知道为何虚拟环境是分开的了吧。
  Note :virtualenv 建立的虚拟环境与主机的 Python 环境彻底无关,你主机配置的库不能在 virtualenv 中直接使用。你须要在虚拟环境中利用 pip install 再次安装配置后才能使用。

关于建立一个虚拟环境,你也能够这样作!

一、为一个工程建立一个虚拟环境:

$ cd my_project_dir
$ virtualenv venv  #venv为虚拟环境目录名,目录名自定义

  virtualenv venv 将会在当前的目录中建立一个文件夹,包含了Python可执行文件,以及 pip 库的一份拷贝,这样就能安装其余包了。
   虚拟环境的名字(此例中是 venv )能够是任意的;若省略名字将会把文件均放在当前目录。

  在任何你运行命令的目录中,这会建立Python的拷贝,并将之放在叫作 venv 的文件中。

二、你能够选择使用一个Python解释器:
$ virtualenv -p /usr/bin/python2.7 venv    # -p参数指定Python解释器程序路径
这将会使用 /usr/bin/python2.7 中的Python解释器。

虚拟环境激活,若想使用就须要激活建立的虚拟环境!
进入虚拟环境目录 执行source ./bin/activate激活虚拟环境:

# 相对路径方式:
~/TestEnv$ source bin/activate (TestEnv) ~/TestEnv$ python -V Python 2.7.11+

# 绝对路径方式 $ source venv/bin/activate # 绝对路径

 从如今起,任何你使用pip安装的包将会放在 venv 文件夹中,与全局安装的Python隔绝开。像日常同样安装包,好比:

$ pip install requests

使用requirements.txt安装版本包(requirements.txt文件下保存的都是各个依赖包的版本信息)

pip install -r requirements.txt

  进入环境env1,执行pip freeze > requirements.txt将包依赖信息保存在requirements.txt文件中。
  最好手动调整一下顺序,好比numpy和scipy要在matplotlib前面安装;另外若是想安装最新版本的,再将后面的版本号==1.9.1什么的删除。
  而后进入目的虚拟环境env2,执行pip install -r requirements.txt,pip就会自动从网上下载并安装全部包。
  虚拟环境env2若是是env1的拷贝,最好先pip uninstall -ry requirements.txt,再pip install -r requirements.txt

若是你在虚拟环境中暂时完成了工做,则能够停用它:

退出虚拟环境:

# 在环境下,相对退出
(TestEnv) ~/TestEnv$ deactivate ~/TestEnv$

#走绝对路径
$ .venv/bin/deactivate

这将会回到系统默认的Python解释器,包括已安装的库也会回到默认的。

要删除一个虚拟环境,只需删除它的文件夹。(执行 rm -rf venv )。
  这里virtualenv 有些不便,由于virtual的启动、中止脚本都在特定文件夹,可能一段时间后,你可能会有不少个虚拟环境散落在系统各处,你可能忘记它们的名字或者位置。

virtualenvwrapper 

  鉴于virtualenv不便于对虚拟环境集中管理,因此推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虚拟环境工做变得便利。它把你全部的虚拟环境都放在一个地方。
一、安装virtualenvwrapper(确保virtualenv已安装)

pip install virtualenvwrapper
pip install virtualenvwrapper-win  #Windows使用该命令

二、安装完成后,在~/.bashrc写入如下内容

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

  第一行:virtualenvwrapper存放虚拟环境目录
  第二行:virtrualenvwrapper会安装到python的bin目录下,因此该路径是python安装目录下bin/virtualenvwrapper.sh

source ~/.bashrc    #读入配置文件,当即生效

 virtualenvwrapper基本使用

1.建立虚拟环境 mkvirtualenv

mkvirtualenv venv
  

这样会在WORKON_HOME变量指定的目录下新建名为venv的虚拟环境。
若想指定python版本,可经过"--python"指定python解释器

mkvirtualenv --python=/usr/local/python3.5.3/bin/python venv

2. 基本命令  
  查看当前的虚拟环境目录

[root@localhost ~]# workon
py2
py3

  切换到虚拟环境

[root@localhost ~]# workon py3
(py3) [root@localhost ~]# 

  退出虚拟环境

(py3) [root@localhost ~]# deactivate
[root@localhost ~]# 

  删除虚拟环境

rmvirtualenv venv

使用pycharm自动创建虚拟环境

也可使用 pycharm 自带功能创建虚拟环境

以后,将 requirements.txt 文件放到虚拟目录 venv 下,pycharm自动识别,点击『Install requirements』安装相应的 package。

或者使用:

(venv) $ pip freeze >requirements.txt    # 生成 (venv) $ pip install -r requirements.txt # 安装

 

接下来我们说说virtualenv,英文比较好的同窗,可能已经猜到了一半,virtual,即:虚拟的。那env是什么鬼?environment吗?对,是它!是它!就是它!因此翻译成中文就是”虚拟环境“

慢着,师傅,先踩一脚,到底什么是虚拟环境呢?顾名思义,它是一个虚拟出来的环境。通俗的来说,能够借助虚拟机,docker来理解虚拟环境,就是把一部份内容独立出来,咱们把这部分独立出来的东西称做“容器”,在这个容器中,咱们能够只安装咱们须要的依赖包,并且各个容器之间互相隔离,互不影响。譬如,本次学习须要用到Flask,因此咱们能够作一个Flask的虚拟环境,里面只须要安装Flask相关包就能够了。再譬如,下次咱们要学习Django,咱们再搞一个Django的虚拟环境就行了。

慢着,师傅,我彷佛还不懂耶?咱们再来一个栗子吧。

【前提概要】
Django也是一个比较流行的web框架,比Flask要复杂得多。Django的迭代更新很是快,也比较频繁,因此有一些过期的东西须要丢弃掉,一些新的东西须要加进来,从而致使不一样的版本之间不兼容。好比Django1.三、Django1.四、Django1.8之间就有很大的差别性。

【故事背景】
假设要进行Python web开发,使用的是Django。手上还有两个老项目A和B须要维护,而新项目C也正在开发中。这里项目A使用的是django1.3,项目B使用的是django1.4,而新项目C使用的是Django1.8。那么问题来了,如何同时在本地进行ABC这三个项目的开发和维护?

正常的模式多是这样:如今在A项目上有一个BUG须要修复,因而,先执行下面的命令,删除掉原来的版本:

pip uninstall django

而后再执行下面的命令安装django1.3

pip install django==1.3

数分钟后,bug修复完毕,好,如今进行新项目C的开发了,而后又要重复上面的故事。

好了,这仍是最理想的状况。什么?还有不理想的状况?是的,基于django的第三方依赖也是跟Django版本相关的,因而除了install和uninstall Django以外,还要uninstall和install其依赖,Orz,这特么的就尴尬了...

好了,能够开始虚拟环境之旅了,跟紧了,同窗们。


做者: NavCat
连接:http://www.imooc.com/article/18537?block_id=tuijian_wz
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合做!

接下来我们说说virtualenv,英文比较好的同窗,可能已经猜到了一半,virtual,即:虚拟的。那env是什么鬼?environment吗?对,是它!是它!就是它!因此翻译成中文就是”虚拟环境“

慢着,师傅,先踩一脚,到底什么是虚拟环境呢?顾名思义,它是一个虚拟出来的环境。通俗的来说,能够借助虚拟机,docker来理解虚拟环境,就是把一部份内容独立出来,咱们把这部分独立出来的东西称做“容器”,在这个容器中,咱们能够只安装咱们须要的依赖包,并且各个容器之间互相隔离,互不影响。譬如,本次学习须要用到Flask,因此咱们能够作一个Flask的虚拟环境,里面只须要安装Flask相关包就能够了。再譬如,下次咱们要学习Django,咱们再搞一个Django的虚拟环境就行了。


做者: NavCat
连接:http://www.imooc.com/article/18537?block_id=tuijian_wz
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合做!

接下来我们说说virtualenv,英文比较好的同窗,可能已经猜到了一半,virtual,即:虚拟的。那env是什么鬼?environment吗?对,是它!是它!就是它!因此翻译成中文就是”虚拟环境“

慢着,师傅,先踩一脚,到底什么是虚拟环境呢?顾名思义,它是一个虚拟出来的环境。通俗的来说,能够借助虚拟机,docker来理解虚拟环境,就是把一部份内容独立出来,咱们把这部分独立出来的东西称做“容器”,在这个容器中,咱们能够只安装咱们须要的依赖包,并且各个容器之间互相隔离,互不影响。譬如,本次学习须要用到Flask,因此咱们能够作一个Flask的虚拟环境,里面只须要安装Flask相关包就能够了。再譬如,下次咱们要学习Django,咱们再搞一个Django的虚拟环境就行了。

做者: NavCat 连接:http://www.imooc.com/article/18537?block_id=tuijian_wz 来源:慕课网 本文原创发布于慕课网 ,转载请注明出处,谢谢合做!
相关文章
相关标签/搜索