前言:

在使用 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. Mycat 关键特性

    关键特性 支持SQL92标准 支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理. ...

  2. 遇见Python

    开发: 开发语言:    1.高级语言:Python  Java.PHP    C#    Go  ruby C++...    ===> 字节码    2.低级语言:C.汇编          ...

  3. yzoj P2371 爬山 题解

    背景 其实 Kano 曾经到过由乃⼭,当然这名字⼀看⼭主就是 Yuno 嘛.当年 Kano 看见了由乃⼭,内⼼突然涌出了⼀股杜甫会当凌绝顶,⼀览众⼭⼩的 豪⽓,于是毅然决定登⼭.但是 Kano 总是习 ...

  4. 微信小程序开发实战-天气小程序

    园龄6年8个月了,还一篇文章都没写过,惭愧! 最近周末做了个天气预报小程序,在这里整理一下开发过程和注意点,给对小程序开发感兴趣的伙伴们提供点参考. 废话不多说,先上图最终效果: 下面进入正文: 第一 ...

  5. iOS性能优化-异步绘制

    参考地址:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/ 很久以前就看过这篇文章,但是也只是看过就过了,没有去整 ...

  6. Linux 命令个人笔记

    [表示命令]man -f [] 显示一个命令的功能whatis [] 显示一个命令的功能ls -lR | grep '^-' | wc -l 统计一个目录下总共有多少个文件head [-n numbe ...

  7. RocketMQ消息队列部署与可视化界面安装

    MQ安装部署 最新版本下载:http://rocketmq.apache.org/release_notes 修改配置 vi conf/broker.conf 添加brokerIP1 brokerIP ...

  8. Spring Boot 二十个注解

    Spring Boot 二十个注解 占据无力拥有的东西是一种悲哀. Cold on the outside passionate on the insede. 背景:Spring Boot 注解的强大 ...

  9. 我的Java秋招面经大合集

    阿里面经   阿里中间件研发面经 蚂蚁金服研发面经 岗位是研发工程师,直接找蚂蚁金服的大佬进行内推. 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer. 然后我也参加了 ...

  10. Spring Cloud之Zuul

    API网关是一个更为智能的应用服务器,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户端访问都需要经过它来进行调度和过滤.它除了要实现请求路由.负载均衡.校验过滤等功能之外,还需要更多能力, ...