前言:

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

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

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

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

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

一、Linux下安装、配置virtualenv

1、下载安装virtualenv,通过物理环境的pip3工具安装

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

安装完之后你的linux就多了一个virtualenv命令。

2、创建存放虚拟环境的目录

  1. mkdir /opt/Myproject
  2. cd /opt/Myproject

3、创建虚拟环境venv

  1. virtualenv --no-site-packages --python=python3 venv
  2.  
  3. #参数:
  4. #--no-site-packages 这是构建干净,隔离的模块的参数
  5. #--python=python3 这个参数是指定虚拟环境以哪一个物理解释器为基础的
  6. # venv 是虚拟环境的名字

4、进入虚拟环境目录,激活虚拟环境

  1. source venv/bin/activate
  1. #激活虚拟环境,原理就是修改了PATH变量,path是有顺序执行的
  2. echo $PATH 检查环境变量
  3. which python3
  4. which pip3 检查虚拟环境是否正常

5、安装第三方包

  1. pip3 install django==1.9.8
  2.  
  3. #此时pip的包都会安装到venv环境下,venv是针对Myproject创建的

6、退出虚拟环境

  1. deactivate
  1. virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到
    virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv
    修改相关环境变量,让命令pythonpip均指向当前的virtualenv环境。

二、linux下安装虚拟环境virtualenvwrapper

在前面我们已经学会了如何安装virtualenv,但

virtualenv 的一个最大的缺点就是:

每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就需要我们记住每个虚拟环境所在的目录。

并且还有可能你忘记了虚拟环境放在哪。。。

  • 一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,例如/opt/all_venv/,并且针对不同的目录做不同的事。
  • 使用virtualenvwrapper管理你的虚拟环境(virtualenv),其实他就是统一管理虚拟环境的目录,并且省去了source的步骤。

步骤一:安装virtualenvwrapper

  1. pip3 install virtualenvwrapper #注意:安装这个命令,必须在物理解释下

注意:pip3下载包之后,一定要检查一下自己的环境变量,将python3放在最前面

  1. echo $PATH #查看自己的环境变量
  2.  
  3. #编辑这个文件,在最底行写入PATH
  4. vim /etc/profile
  5. #写入
  6. PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    #保存退出
  7.  
  8. #读一下这个/etc/profile 使得生效
    source /etc/profile

步骤二:修改环境变量,每次开机就加载这个virtualenvwrapper工具

  1. vim ~/.bashrc #vim编辑用户家目录下的.bashrc文件,这个文件是用户在登录的时候,就读取这个文件,写入下面几行代码:
  2. #export 是读取shell命令的作用
  3. #这些变量根据你自己的绝对路径环境修改
  4. export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录
  5. export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' #添加virtualenvwrapper的参数,生成干净隔绝的环境
  6. export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 #指定python解释器
  7. source /opt/python36/bin/virtualenvwrapper.sh #执行virtualenvwrapper安装脚本

步骤三:重新登录会话,使得这个配置生效

  1. logout
  2. ssh ...

步骤四:基本使用virtualenvwrapper

  1. #1.创建一个虚拟环境:
  2.  
  3. mkvirtualenv my_django1
  4. #这会在 ~/Envs 中创建 my_django1 文件夹。
  5.  
  6. #2.在虚拟环境上工作:激活虚拟环境my_django1
  7.  
  8. workon my_django1
  9.  
  10. #3.再创建一个新的虚拟环境
  11. mkvirtualenv my_django2
  12.  
  13. #4.workon还可以任意停止你当前的环境,可以在多个虚拟环境中来回切换
  14. workon django1
  15.  
  16. workon django2
  17.  
  18. #5.也可以手动停止虚拟环境
  19. deactivate
  20.  
  21. #6.删除虚拟环境,需要先退出虚拟环境
  22. rmvirtualenv my_django1
  23.  
  24. #7.列举所有的环境
  25. lsvirtualenv
  26.  
  27. #8.直接进入到当前开发环境的 site-packages目录
  28. cdsitepackages
  29.  
  30. #9.导航到当前的虚拟环境目录
  31. cdvirtualenv
  32.  
  33. #显示site—packages目录中的内容
  34. lssitepackages
  35.  
  36. #完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

三、确保开发环境的一致性

  1. 1.假设我们在本地开发环境,准备好了项目+依赖包环境
  2. 2.现在需要将项目上传至服务器,上线发布
  3. 3.那么就要保证服务器的python环境一致性
  1. 解决方案:
  2. 1.通过命令保证环境的一致性,导出当前python环境的包
  3. pip3 freeze > requirements.txt
  4.  
  5. 这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表。
  6. 可以使用 pip list”在不产生requirements文件的情况下, 查看已安装包的列表。
  7.  
  8. 2.上传至服务器后,在服务器下创建virtualenv,在venv中导入项目所需的模块依赖
  9. pip3 install -r requirements.txt

四、Mac下创建pycharm

第二步:

第三步:此时这里的Django环境是虚拟环境的版本

第四步:检查venv下的django版本

第五步:添加已创建的虚拟环境venv的python解释器,至pycharm,用于创建1.98指定版本的django

第六步:成功启动1.98版本的django

虚拟环境:virtualenv与virtualenvwrapper的更多相关文章

  1. python虚拟环境--virtualenv和virtualenvwrapper

    python虚拟环境--virtualenv和virtualenvwrapper http://www.cnblogs.com/technologylife/p/6635631.html https: ...

  2. Centos7 python虚拟环境virtualenv和virtualenvwrapper简单介绍

    我的系统版本是 [root@localhost ~]# cat /etc/os-release 我的Python版本是 [root@localhost ~]# python3 -V 关于如何安装Pyt ...

  3. Centos7虚拟环境virtualenv与virtualenvwrapper的安装及基本使用

    一.使用虚拟环境的原因 在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题:亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难.此时,我们需 ...

  4. 虚拟环境virtualenv和virtualenvwrapper(转)

    virtualenv是用来创建一个独立的Python虚拟环境的工具,通过virtualenv可以创建一个拥有独立的python版本和安装库的虚拟开发环境.这样一来我们就可以在虚拟环境中安装各种各种所需 ...

  5. os系统安装Python虚拟环境virtualenv和virtualenvwrapper

    一.安装Python 上节已经讲了如何安装Python2和Python3 二.给Python3安装virtualenv 在终端输入:sudo pip3 install virtualenv 等待安装成 ...

  6. virtualenv与virtualenvwrapper虚拟环境

    python开发之virtualenv与virtualenvwrapper讲解 在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物 ...

  7. python虚拟环境 -- virtualenv , virtualenvwrapper

    virtualenv -- python虚拟沙盒 有人说:virtualenv.fabric 和 pip 是 pythoneer 的三大神器. 一.安装 pip install virtualenv ...

  8. python虚拟环境的使用---virtualenv and virtualenvwrapper

    虚拟环境 virtualenv 常用操作 step1: 安装 : pip install virtualenv step2:新建 : virtualenv venv cd venv activate ...

  9. 配置虚拟环境(virtualenv+virtualenvwrapper)

    安装virtualenv pip3 install virtualenv 安装virtualenvwrapper pip install virtualenvwrapper # Linux使用该条 p ...

  10. 聊聊 virtualenv 和 virtualenvwrapper 实践

    各位 Python 的小伙伴肯定多多少少接触过 virtualenv.本文将介绍 virtualenv 以及如何更科学更优雅地使用 virtualenv. virtualenv 首先来聊一下 virt ...

随机推荐

  1. 免费下载 80多种的微软推出入门级 .NET视频

    .NET Core 3.0发布视频系列中宣布了80多个新的免费视频,这些视频同时放在Microsoft的Channel 9 和youtube上面. 在线观看由于跨洋网络效果不太好,下载到机器上慢慢上是 ...

  2. 品Spring:关于@Scheduled定时任务的思考与探索,结果尴尬了

    非Spring风格的代码与Spring的结合 现在的开发都是基于Spring的,所有的依赖都有Spring管理,这没有问题. 但是要突然写一些非Spring风格的代码时,可能会很不习惯,如果还要和Sp ...

  3. Windows10 1903错误0xc0000135解决方案

    Windows10 1903错误0xc0000135解决方案 === windows10 1903是2019年Mircosoft推出的最新版windows操作系统,但是有很多机器装上之后会存在不支持. ...

  4. WebSocket协议与抓包

    WebSocket协议 WebSocket并不是全新的协议,而是利用了HTTP协议来建立连接,它的目的是在浏览器和服务器之间建立一个不受限的双向通信的通道,比如说,服务器可以在任意时刻发送消息给浏览器 ...

  5. Flutter中TabBarView切换状态保存

    TabBarView 类似于Android中的viewPager,但是默认是没有实现切换分页状态保存的.估计是出于节约内存的原因吧. 发现这个问题的时候,搜索了一下全网.大致就两种解决方案,1是修改源 ...

  6. Vue入门教程 第一篇 (概念及初始化)

    注:为了本教程的准确性,部分描述引用了官网及网络内容. 安装Vue 1.使用npm安装vue: npm install vue 2.下载使用js文件: https://vuejs.org/js/vue ...

  7. deferred对象和promise对象(一)

    个人认为阮一峰老师讲的关于deferred对象是最容易理解的. deferred对象是jquery的回调函数解决方案.解决了如何处理耗时操作的问题,对那些操作提供了更好的控制,以及统一的编程接口. d ...

  8. 超详细!! sql server 同步数据库 发布 订阅 跨网段 无公网ip 常见问题

    问题描述 主机1:发布端 阿里云服务器--有公网ip 主机2:订阅端 笔记本--无公网ip 数据量很小,主要是熟悉发布订阅的操作流程. 主机2仅仅作为主机1的本地备份,要求修改云服务器上数据后,能通过 ...

  9. Java自动化测试框架-02 - TestNG之理论实践 - 纸上得来终觉浅,绝知此事要躬行(详细教程)

    理论 TestNG,即Testing, NextGeneration,下一代测试技术,是一套根据JUnit 和NUnit思想而构建的利用注释来强化测试功能的一个测试框架,即可以用来做单元测试,也可以用 ...

  10. 了解ajax基本爬取方式

    '''爬去豆瓣电影数据了解ajax的基本爬去方式 ''' from urllib import requestimport jsonimport ssl url = "https://mov ...