Python的虚拟环境配置(pyenv+virtualenv)

一、为什么需要配置虚拟环境


Python 2和Python 3之间存在着较大的差异,并且,由于各种原因导致了Python 2和Python 3的长期共存。在实际工作过程中,我们可能会同时用到Python 2和Python 3,因此,也需要经常在Python 2和Python 3之间进行来回切换。这就需要对python的版本进行管理,除此之外还需要对不同的软件包进行管理。大部分情况下,对于开源的库我们使用最新版本即可。但是,有时候可能需要对相同的Python版本,在不同的项目中使用不同版本的软件包。

在这里,我们要使用两个工具:pyenv和virtualenv。前者用于管理不同的Python版本,后者用于管理不同的工作环境。有了这两个工具,Python相关的版本问题将不再是问题。

二、pyenv


pyenv是一个Python版本管理工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv以后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同Python版本之间的切换也非常简单。pyenv官方地址

ubuntu下安装:
为了能正确安装 先执行以下更新

sudo apt-get update

然后安装以下依赖和部分常用工具。

sudo apt-get install man gcc  make  lsof ssh openssl tree vim dnsutils iputils-ping

sudo apt-get install net-tools psmisc sysstat curl telnet traceroute wget libbz2-dev libpcre3

sudo apt-get install libpcre3-dev  libreadline-dev libsqlite3-dev libssl-dev llvm 

sudo apt-get install zlib1g-dev git mysql-server mysql-client zip  p7zip

安装pyenv
1 安装pyenv,在命令行下键入:
刚刚我们安装了git,利用git安装简单快速

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

2 将安装路径写入~/.bashrc
将以下三条语句写入 ~/.bashrc
vim .bashrc 利用vim编辑器打开文件进入如下设置:

export PATH="/home/foxfly/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

然后执行

$ source  ~/.bashrc  #配置立刻生效

echo $PATH
#如果路径第一个结尾是shims则表示成功
/home/python/.pyenv/plugins/pyenv-virtualenv/shims:/home/python/.pyenv/shims:/home/python/.pyenv/bin:/home/python/bin:/home/python/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

3 更新一下

$ pyenv rehash



4.安装python。


千万别卸载ubuntu上原有的python2.7
#1.在安装python之前,我们必须要安装python所需要的依赖包,这个必须要安装, 否则安装会失败的:

sudo apt-get install libc6-dev gcc

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm

pyenv install 3.6.4 -v  #-v 以日志模式显示安装过程, 3.6.4可以换成你想要的python版本

更新pyenv数据库

pyenv versions

列出所安装的python版本

pyenv versions

切换python版本

pyenv  global 3.6.4

安装virtualenv
virtualenv本身是一个独立的项目,用以隔离不同项目的工作环境。例如,项目A和项目B都是使用Python 2.7.13,但是,项目A需要使用Flask 0.8版本,项目B需要使用Flask 0.9版本。我们只要组合pyenv和virtualenv这两个工具,就能够构造Python和第三方库的任意版本组合,拥有了很好的灵活性,也避免了项目之间的相互干扰。

virtualenv本身是一个独立的工具,用户可以不使用pyenv单独使用virtualenv。但是,如果你使用了pyenv,就需要安装pyenv-virtualenv插件而不是virtualenv软件来使用virtualenv的功能。
#安装

$ pip install virtualenv

1.首先创建项目目录
$ sudo mkdir -p myproject/blog
cd myproject/blog

2.创建项目的虚拟环境
#用法:pyenv virtualenv python版本号 虚拟环境名
$ pyenv virtualenv 3.6.4 env36 #注意版本号必须是已经安装的,否则会报错
如果失败下载安装这个
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

安装完这个一定重启终端,不然一样无效。

3.切换到虚拟环境
python@ubuntu:/myproject/blog$ pyenv activate env36

切出虚拟环境
(env36) python@ubuntu:/myproject/blog$ pyenv deactivate env36

到此ubuntu下安装就结束了。

centeros7安装很相同
1.先安装依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

2.在家目录下安装pyenv
git clone git://github.com/yyuu/pyenv.git .pyenv

3.执行命令,设置配置文件
vim /etc/profile.d/pyenv.sh

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

保存退出后

source /etc/profile.d/pyenv.sh
然后其他步骤和ubuntu下相同。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓屏幕适配问题

屏幕适配是根据屏幕密度,dpi为单位的,而不是分辨率。 手机会根据不同手机的密度,自己去不同资源目录下去找对应的资源 比如:   每个图片目录下的图片资源都是一样的,只是大小不一样   比如drawable-sw800dp-mdpi目录&#xff…

MapReduce原理全剖析

MapReduce剖析图 如上图所示是MR的运行详细过程 首先mapTask读文件是通过InputFormat(内部是调RecordReader()–>read())来一次读一行,返回K,V值。(默认是TextInputFormat,还可以输入其他的类型如:音视频&…

利用selenium webdriver点击alert提示框

在进行元素定位时常常遇到这样的alert框: 那么该如何定位并点击确定或取消按钮呢?stackoverflow上找到了这个问题的答案。 OK, Show you the code: 1 driver.findElement(By.id("updateButton")).click(); 2 //pop up w…

Log 日志的使用与重要性

开发过程中出现bug是必不可免的,你会怎样debug?从第1行代码开始看么?还是有个文件里面记录着哪里错了更方便呢!!!log日志 Python中有个logging模块可以完成相关信息的记录,在debug时用它往往事…

webdriver 的三种等待方式

1、显式等待 一个显式等待是你定义的一段代码,用于等待某个条件发生然后再继续执行后续代码。 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWait #…

Django的核心思想ORM

元类实现ORM 1. ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想,“Object Relational Mapping”,即对象-关系映射,简称ORM。 一个句话理解就是:创建一个实例对象,用创建它的类名当做数据表名&#x…

Secondary Namenode的Check point机制以及Namenode、Datanode工作机制说明

目录前言:1、NameNode的工作机制2、DataNode的工作机制3、Secondary Namenode的Check point机制 目录 前言: 在说明checkpoint机制之前,先要了解下namenode、datanode的一些功能和职责。 1、NameNode的工作机制 问题场景: 1…

表单验证的初步实现和省市级联

1.表单验证的初步实现 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html xmlns"http://www.w3.org/1999/xhtml" lang"en"><head><meta http-equiv"Conte…

抓包软件:Charles

修正&#xff1a;手机不必一定连接电脑分享的热点&#xff0c;只需要手机和电脑在同一个局域网下就可以了&#xff0c;手机代理IP设置为电脑的IP。 之前写过一篇通过Wireshark进行抓包&#xff0c;分析网络连接的文章《通过WireShark抓取iOS联网数据实例分析》&#xff1a;htt…

Hive的相关介绍

目录前言&#xff1a;1、Hive简介2、Hive架构3、Hive与Hadoop的关系4、Hive与传统数据库对比5、Hive的数据存储总结&#xff1a; 目录 前言&#xff1a; 为什么使用Hive 直接使用hadoop所面临的问题 人员学习成本太高 项目周期要求太短 MapReduce实现复杂查询逻辑开发难…

数据结构实验之排序七:选课名单

数据结构实验之排序七&#xff1a;选课名单 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 随着学校规模的扩大&#xff0c;学生人数急剧增加&#xff0c;选课名单的输出也成为一个繁重的任务&#xff0c;我校目前有在校生3万多名&#xff0…

Java第五次作业--面向对象高级特性(抽象类和接口)

一、学习要点 认真看书并查阅相关资料&#xff0c;掌握以下内容&#xff1a; 掌握抽象类的设计掌握接口的设计理解简单工厂设计模式理解抽象类和接口的区别掌握包装类的应用掌握对象的比较方法和比较器的使用学习使用日期操作类学习匿名内部类的使用二、作业要求 发布一篇随笔&…

关于国内厂商的国际版杀毒软件

很多国内软件公司的杀毒软件都分为国内版和国际版&#xff0c;这二者有什么区别呢&#xff1f; 首先&#xff0c;这两个的团队是不一样的。国际版的团队大多收购&#xff0c;国内版为自研。例如百度杀毒的国际版就是原超级巡警的团队做的&#xff0c;而国内版是自己另起炉灶。…

gulp教程之gulp-minify-css【gulp-clean-css】

原文&#xff1a;http://www.ydcss.com/archives/41 简介&#xff1a; 使用gulp-minify-css压缩css文件&#xff0c;减小文件大小&#xff0c;并给引用url添加版本号避免缓存。重要&#xff1a;gulp-minify-css已经被废弃&#xff0c;请使用gulp-clean-css&#xff0c;用法一致…

大数据面试题总结(附答案)

文章目录前言hadoop相关试题Hive相关试题Hbase相关试题Storm相关试题Spark相关试题Java基础试题其他前言 最近由于要准备面试就开始提早看些面试、笔试题。以下是自己总结的一些经常出现、有价值的试题&#xff0c;包含hadoop、hive、hbase、storm、spark等。答案仅供参考&…

win7 IE11卸载后无法上网

今天某同事需要访问一个银行网站&#xff0c;必须使用IE8,我在win7中降级IE11,直接卸载了IE11和其语言包&#xff0c;发现IE8再也打不开网页了&#xff0c;每次打开都提示保存html网页。测试Google Chrome上网完全没有问题。IE8的internet选项等任何工具菜单点击均无反应&#…

关于django的模板

模板 问题 如何向请求者返回一个漂亮的页面呢&#xff1f; 肯定需要用到html、css&#xff0c;如果想要更炫的效果还要加入js&#xff0c;问题来了&#xff0c;这么一堆字段串全都写到视图中&#xff0c;作为HttpResponse()的参数吗&#xff1f;这样定义就太麻烦了吧&#x…

Hbase简介及常用命令相关知识总结

文章目录目录前言&#xff1a;1.Hbase简介1.1、什么是Hbase1.2、与传统数据库的对比1.3、Hbase集群中的角色2、Hbase数据模型3、Hbase命令总结&#xff1a;目录 前言&#xff1a; 对于Hbase来说&#xff0c;由于其是基于列的数据库&#xff0c;所以比传统的数据库快许多&…

Django中模型类 属性-学习笔记

定义属性 Django根据属性的类型确定以下信息&#xff1a; 当前选择的数据库支持字段的类型渲染管理表单时使用的默认html控件在管理站点最低限度的验证 django会为表创建自动增长的主键列&#xff0c;每个模型只能有一个主键列&#xff0c;如果使用选项设置某属性为主键列后d…

Angular Redux

Angular Redux 转载于:https://www.cnblogs.com/skating/p/6185878.html