前言:

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

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

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

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

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

一、Linux下安装、配置virtualenv

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

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

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

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

mkdir /opt/Myproject
cd /opt/Myproject

3、创建虚拟环境venv

virtualenv --no-site-packages --python=python3  venv

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

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

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

5、安装第三方包

pip3 install django==1.9.8

#此时pip的包都会安装到venv环境下,venv是针对Myproject创建的

6、退出虚拟环境

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

二、linux下安装虚拟环境virtualenvwrapper

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

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

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

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

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

步骤一:安装virtualenvwrapper

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

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

echo $PATH      #查看自己的环境变量

#编辑这个文件,在最底行写入PATH
vim /etc/profile
#写入
PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#保存退出 #读一下这个/etc/profile 使得生效
source /etc/profile

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

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

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

logout
ssh ...

步骤四:基本使用virtualenvwrapper

#1.创建一个虚拟环境:

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

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

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

    前言 工业互联网,物联网,可视化等名词在我们现在信息化的大背景下已经是耳熟能详,日常生活的交通,出行,吃穿等可能都可以用信息化的方式来为我们表达,在传统的可视化监控领域,一般都是基于 Web SCAD ...

  2. C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

    目录 为什么要刷LeetCode 刷LeetCode有哪些好处? LeetCode vs 传统的 OJ LeetCode刷题时的心态建设 C#如何刷遍LeetCode 选项1: VS本地Debug + ...

  3. 记录使用echarts的graph类型绘制流程图全过程(一)-x,y位置的计算

    先说下本次案例业务需求,输入2个节点,获取数据后绘制出2个节点间的路径,之前使用的是网状图,但是网状图的效果不佳,需要转换成流程图的模式: 那么如何在不修改数据的情况下,实现类似效果尼? 看了下ech ...

  4. Python集训营45天—Day08 (文件操作)

    目录 1. 文件操作介绍 2. 文件的读写 2.1 文本文件 2.2 二进制文件 2.3 JSON文件 3. 文件的定位,重命名和删除 4. 文件夹的相关操作 1. 文件操作介绍 大家应该听说过一句话 ...

  5. ELK 学习笔记之 elasticsearch基本概念和CRUD

    elasticsearch基本概念和CRUD: 基本概念: CRUD: 创建索引: curl -XPUT 'http://192.168.1.151:9200/library/' -d '{" ...

  6. 关于jQery中$.Callbacks()的理解

    $.Callbacks()主要使用了回调,而说到回调又不得不说javascript的事件循环机制了. 所以想了解回调最好先看看js运行机制. $.Callbacks()可以理解为创建一个回调队列 va ...

  7. 从单片机到操作系统⑦——深入了解FreeRTOS的延时机制

    >没研究过操作系统的源码都不算学过操作系统 # FreeRTOS 时间管理 时间管理包括两个方面:系统节拍以及任务延时管理. ## 系统节拍: 在前面的文章也讲得很多,想要系统正常运行,那么时钟 ...

  8. day 21

    目录 组合 封装 访问机制 property 多态 抽象类的目的 鸭子类型 组合 组合是指的是一个对象中的属性,时另一个对象. 组合的目的和继承一样,为了减少代码冗余 封装 封装指的是把一堆属性(特征 ...

  9. mpvue 星星打分组件

    上图: <template> <div class="container"> <div v-for="(star,index) in sta ...

  10. 最简单的ArcGIS Engine应用程序(上)

    名词: IWorkspaceFactory 工作空间工厂 ShapeFileWorksapceFactory 矢量文件工作空间工厂 IWorkspce 工作空间 IFeatrueWorkspace 要 ...