zoukankan      html  css  js  c++  java
  • Linux-06 python开发之virtualenv与virtualenvwrapper讲解

    在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题;

    亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。

    此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。

    这里,就要隆重介绍 virtualenv,一个可以帮助我们管理不同 Python 环境的绝好工具。

    virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。

    为什么要用virtualenv或virtualenvwrappe?

    #有个需求,我现在有两个项目,一个得运行于django1.1.11 ,还有一个版本得跑在django2.0上 
    python3 manage.py runserver  0.0.0.0:8000     #我得调用django的模块,  pip3 list ,运行了django1.11.11
    
    python3 manage.py runserver  0.0.0.0:9000     # 还得调用django的模块,我想运行django2.0
    
    #问题,能调用一个解释器吗?
    1. 买俩电脑,装俩python3 ? 大哥真有钱
     
    2.装多个python解释器,在当前linux下,安装一个python3.6 安装一个python3.7 
    python3.6 manage.py runserver  0.0.0.0:8000     #我得调用django的模块,  pip3 list ,运行了django1.11.11
    
    python3.7 manage.py runserver  0.0.0.0:9000     # 还得调用django的模块,我想运行django2.0
    
    3. 使用虚拟解释器环境,可以在一台服务器上,运行多个python解释器的环境
    并且这个虚拟环境的创建,非常快速,简洁,好用
    	1.  新建虚拟环境  venv1
    	
    	2.  django2运行在venv2 
    

      

    一、Linux下安装、配置virtualenv

    1.通过pip3安装虚拟环境

    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv==16.7.9
    

    2. 通过virtualenv命令,创建第一个新的虚拟环境

    virtualenv --no-site-packages --python=python3     venv1
    virtualenv --no-site-packages --python=python3     venv2 
    virtualenv --no-site-packages --python=python3     venv3 
    virtualenv --no-site-packages --python=python3     venv4  
    virtualenv --no-site-packages --python=python3     venv5 
    
    	参数解释
    	--no-site-packages  创建一个干净,隔离宿主机环境的虚拟环境
    	--python=python3   #指定你的虚拟环境,以哪个解释器为base环境,我的这个是以我机器上的python3解释器为主体
    

    3.激活虚拟环境,切换宿主机环境,进入虚拟环境的环境变量

    source /opt/all_env/venv1/bin/activate
    

    4.检查环境变量PATH,检查是否正确激活了虚拟环境

    (venv1) [root@s14linux ~ 12:03:48]#echo $PATH
    /opt/all_env/venv1/bin:/opt/python36/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:
    

    5.检查你当前的python3和pip3来自于哪里

    which python3 
    (venv1) [root@windlinux ~ 12:04:12]#which python3
    /opt/all_env/venv1/bin/python3
    
    which pip3 
    

    6.使用venv1虚拟环境,安装一个django1.11.11

    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.11
    

    7.测试运行在一个服务器上,运行两个django版本

    1.宿主机python下运行django2.0
    2.虚拟环境下运行django1.11.11

    8.退出虚拟环境

    deactivate
    

     

    解决服务器环境之保证本地和服务器开发环境一致性的配置:

    1.通过命令导出当前python解释器的pip3包环境
    pip3 freeze >  requirements.py    #这个requirements.py文件,就存放了正常运转的开发软件依赖包的信息
    
    2.将此requirements.py文件传到服务器上
    	上传办法
    	1.  yum install lrzsz  
    		这个lrzsz软件提供了两个命令
    		1.   sz (发送,下载)  从linux往windows下载
    		
    			sz  你想传输的文件名字	
    		
    		2.   rz(接收,上传) 从windows往linux上传
    		
    			rz  直接输入rz命令		
    		
    	2.  通过xftp(公司用xftp)
    

      

    二、Linux下安装、配置virtualenv

    1.下载安装 virtualenvwrapper

    pip3 install -i https://pypi.douban.com/simple virtualenvwrapper
    

    2.执行脚本,让当前机器支持virtualenvwrapper,但是有一个问题,重启后,退出会话后,这个功能就失效了

    3.配置全局变量,让每次登陆linux时候,就加载这个virtualenvwrapper.sh脚本文件,使得virtualenvwrapper这个工具生效

    #打开这个用户环境变量配置文件,写入以下信息,export 就是读取一段shell变量的命令
    vim   ~/.bashrc      #这个文件代表用户环境变量,每次登陆时候加载
    
    export WORKON_HOME=~/Envs   #设置virtualenv的统一管理目录
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   #添加virtualenvwrapper的参数,生成干净隔绝的环境
    export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3.6     #指定python解释器,(这个得根据你自己机器环境来配)
    source  /opt/python36/bin/virtualenvwrapper.sh      #执行virtualenvwrapper安装脚本,这个脚本放在你的python3.6解释器bin目录下
    读取文件,使得生效,此时已经可以使用virtalenvwrapper
    source ~/.bashrc

    4.开始使用virtualenvwrapper,创建一个venv1

    mkvirtualenv  venv1    #这一步会创建venv1,并且放入到WORKON_HOME变量定义目录下,并且自动激活虚拟环境
    
    lsvirtualenv   #查看当前机器所有的虚拟环境
    
    workon   #用于激活虚拟环境,也用于在多个虚拟环境中来回切换,
    
    rmvirtualenv  #用于删除虚拟环境,也会自动找到所有的虚拟环境
    
    cdvirtualenv  #用于直接进入虚拟环境的目录,此命令需要激活虚拟环境
    
    cdsitepackages  #用于直接进入pip3软件包的目录
    

    5.友情提醒

    使用了virtualenvwrapper 就不需要再手动安装virtualenv了,
    

      

     

      

     

    幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
  • 相关阅读:
    Java接口面面观
    Java之今天的异常处理了吗
    Java中自动装箱与拆箱详解
    java中this关键字解析
    Java语言实现机制
    Centos7 中 service iptables save 失效
    基于JQuery网页漂浮广告窗口Js详解
    JS日历
    js时间转换
    两种方法实现在HTML页面加载完毕后运行某个js
  • 原文地址:https://www.cnblogs.com/TodayWind/p/13715708.html
Copyright © 2011-2022 走看看