随笔 - 12  文章 - 0 评论 - 0 trackbacks - 0

1 问题

  当我们拥有两个甚至多个项目A、B、C......,各个项目正常运行需求的python运行环境都不相同。而默认情况下,不管哪个项目,使用的都是全局的Python环境。上述情况,造成的问题就是,A、B、C等项目,只能运行一个;如果运行另一个,必须安装与之匹配的库版本。

 

2 解决思路

  创建一个完全独立的局部python环境(或叫做虚拟环境)。在此环境中,安装所有与某个项目相匹配库即可。总之,一个项目,使用一个虚拟环境;互相之间,没有干扰。

 

3  具体解决步骤

  3.1  安装第三方包virtualenv

    当电脑里面有多个版本的python的时,可以指定版本来进行安装。代码见下:

      pip install virtualenv

      或者

      python3 -m pip install virtualenv

   

  3.2 virtualenv的简单应用

    3.2.1 创建一个局部的隔离的虚拟环境

     打开命令提示符,cd进入到项目myproject(必须根据自己的项目进行修改)所在路径,创建项目myproject的虚拟环境。

      (1) 语法
        virtualenv 虚拟环境名称
        例如:virtualenv ENV
      (2) 可选参数

      (i) -p :指明Python版本创建,到时候就使用此版本的解释器,默认是你安装viretual 包的时候,用的python解释器
      例如:virtualenv -p  C:\Python27\python.exe ENV
      (ii) --system-site-packages:继承系统的三方库。到时候,检索库的时候,也会到系统的三方库中查找,如果不加此项,到时候只会在当前的虚拟环境中找
      例如:virtualenv --system-site-packages ENV

     创建完成后,会在myproject文件夹下自动生成一个ENV文件夹,效果见下图:

 

    ENV文件夹里面的内容见下图:

    

    3.2.2 激活虚拟环境
      (1) 语法
        打开命令提示符,进入到虚拟环境目录/scripts文件夹中,输入activate.bat
      (2) 界面效果

    

      (3) 作用效果
        在环境的激活状态,后续所有的操作都是基于这个虚拟的Python环境包的安装和卸载。代码的执行,比如:pip install 包名(如requests)
      如果不激活创建的虚拟环境,到时候会被安装在全局Python环境中。激活后,则会安装在虚拟环境中。

    3.2.3 在激活状态下的操作
      操作三方库、执行py文件等等
      注意:以上所有操作,均作用在被激活的虚拟环境中

    3.2.4 退出虚拟环境
      (1) 语法
        进入到虚拟环境目录/scripts文件夹中,输入命令deactivate.bat
      (2) 界面效果
    

      (3) 作用效果
        
退出后,所有后续操作,又会再次的作用于全局的Python环境中
    
3.2.5 删除虚拟环境

      直接把项目文件目录下的ENV文件夹删除即可。

  更多使用命令见官网:https://virtualenv.pypa.io/en/latest/userguide/

 

4 补充
  
以后把项目给别人的时候,就可以连同虚拟环境和项目一起拷贝给别人。但是当虚拟环境非常大的时候,这种方法显然不实际。这就需要用到另一种方法了。
即在虚拟环境中,冻结依赖需求文本,把项目和依赖需求文本给别人。

posted on 2018-08-10 17:35 翠竹09 阅读(...) 评论(...) 编辑 收藏