在学习和利用python开发的很多情况下,需要多版本的Python并存。此时需要在系统中安装多个Python,但又不能影响系统自带的 Python。pyenv 就是这样一个 Python 版本管理器。

一、 pyenv介绍

项目地址:https://github.com/pyenv/pyenv

简单的说,pyenv 可以根据需求使用户在系统里安装和管理多个 Python 版本:

  1. 配置当前用户的python的版本
  2. 配置当前shell的python版本
  3. 配置某个项目(目录及子目录)的python版本

    配置多个虚拟环境

pyenv的工作原理:pyenv是利用系统环境变量PATH的优先级,劫持python的命令到pyenv上,根据用户所在的环境或目录,使用不同版本的python。

二、pyenv安装

系统环境:centos 7

  1. 安装git
yum -y install git
  1. 安装python所依赖的库文件
yum -y install gcc make patch openssl-devel sqlite-devel readline-devel  gdbm-devel  zlib-devel bzip2-devel
  1. 安装pyenv
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
  1. 配置环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> .bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> .bash_profile
echo 'eval "$(pyenv init -)"' >> .bashrc
source .bash_profile

三、pyenv的使用

  1. 查看pyenv支持的python版本,同时也是检查pyenv有没有安装成功

    pyenv install --list
  2. 使用pyenv安装python

    pyenv -v install 3.6.6

    由于这个命令从国外网站下载python的过程比较慢。我们可以在.pyenv/目录创建一个cache目录,并将事先准备好的对应版本python包上传至该目录。

  3. 查看pyenv可检测到的版本,*标示的为当前状态下的激活版本

    [root@localhost ~]# pyenv versions
    * system (set by /root/.pyenv/version)
    3.6.6
  4. 切换python版本

    pyenv可以从三个维度来管理python环境,简称为:当前系统、当前目录、当前shell。这三个维度的优先级从左往右依次升高,即当前系统的优先级最低、当前shell的优先级最高。

    如果想修改系统全局的Python环境,可以采用 pyenv global PYTHON_VERSION 命令。该命令执行后会在 $(pyenv root) 目录(默认为 ~/.pyenv )中创建一个名为 version 的文件(如果该文件已存在,则修改该文件的内容),里面记录着系统全局的Python版本号。

    [root@localhost ~]# pyenv global 3.6.6
    [root@localhost ~]# pyenv versions
    system
    * 3.6.6 (set by /root/.pyenv/version)

    对于特定的项目,我们可能需要切换不同的Python环境,这个时候就可以通过 pyenv local PYTHON_VERSION 命令来修改 当前目录 的Python环境。命令执行后,会在当前目录中生成一个 .python-version 文件(如果该文件已存在,则修改该文件的内容),里面记录着当前目录使用的Python版本号。

    [root@localhost python]# pyenv local 3.6.6
    [root@localhost python]# cat .python-version
    3.6.6

    通过执行 pyenv shell PYTHON_VERSION 命令,可以修改 当前shell 的Python环境。执行该命令后,会在当前 shell session (Terminal窗口)中创建一个名为 PYENV_VERSION 的环境变量,然后在 当前shell 的任意目录中都会采用该环境变量设定的Python版本。此时, global 和 local中设定的Python版本均会被忽略。

    [root@localhost python]# pyenv shell system
    [root@localhost python]# echo $PYENV_VERSION
    system

    退出shell有两个方法,一个是重新打开一个shell,一个就是 pyenv shell --unset(退到了之前global的环境)

    [root@localhost python]# pyenv shell --unset
    [root@localhost python]# pyenv version
    3.6.6 (set by /root/python/.python-version)
  5. 创建虚拟环境

    Python应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。

    这意味着一个Python安装可能无法满足每个应用程序的要求。如果应用程序A需要特定模块的1.0版本但应用程序B需要2.0版本,则需求存在冲突,安装版本1.0或2.0将导致某一个应用程序无法运行。

    解决这个问题的方案是创建一个virtual environment,一个目录树,其中安装有特定python版本,以及许多其他包。

    使用pyenv创建虚拟环境

    [root@localhost python]# pyenv virtualenv 3.6.6 django
    [root@localhost python]# pyenv versions
    system
    * 3.6.6 (set by /root/python/.python-version)
    3.6.6/envs/django
    django
  6. python环境目录

    我们在/root/.pyenv/versions看到我们装的python版本

    [root@localhost versions]# ll
    总用量 0
    drwxr-xr-x. 7 root root 68 4月 11 17:25 3.6.6
    lrwxrwxrwx. 1 root root 39 4月 11 17:25 django -> /root/.pyenv/versions/3.6.6/envs/django

    并且可以发现我们创建的虚拟环境django其实是对应python版本目录下的一个软链接。

四、修改pip源

  1. 有时候我们使用pip安装比较大的第三方模块速度会非常的慢甚至还会失败,是因为pip从默认从国外的pip源下载文件。我们可以通过修改pip源的方式提升pip安装速率。

    cd ~
    mkdir .pip.conf vim .pip.conf
    [global]
    index-url=https://mirrors.aliyun.com/pypi/simple/
    trusted-host=mirrors.aliyun.com

    这样pip命令就会从阿里的pip源上第三方模块了,当然也可以在安装的时候通过-i 参数来指定pip源。

    pip install scipy -i https://pypi.douban.com/simple/
  2. 查看当前环境安装包名字

    pip freeze
    pip list

    pip命令-r参数安装requirement.txt文件上的所有包

    pip freeze > ./requirement.txt
    pip isntall -r ./requirement.txt

python多版本管理工具(pyenv)的更多相关文章

  1. 你应该学会的Python多版本管理工具Pyenv

    目录 Pyenv 简介 安装pyenv 通过pyenv安装python各种发行版 pyenv命令 多版本Python的管理 Pyenv常见问题Wiki Pyenv 简介 首先,该工具是在类linux环 ...

  2. Ubuntu中python多版本管理工具-pyenv

    ubuntu系统版本:16.04 # lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubu ...

  3. python版本管理工具pyenv和包管理工具pipenv

    一.pyenv版本管理工具 pyenv是一个python版本管理工具,可以实现轻松切换多个python版本 它可根据每个用户更改全局python版本,也可以为每个项目指定python版本,还可以管理v ...

  4. Python切换版本工具pyenv

    目录 安装pyenv 安装与查看py版本 切换py版本 结合ide使用示例 和virtualenv的一些区别 参考文献 使用了一段时间,我发现这玩意根本不是什么神器,简直就是垃圾,安装多版本总是失败, ...

  5. 腾讯云服务器ubuntu16.04系统下安装Python版本管理工具pyenv

    一. 系统环境   腾讯云提供的系统是ubuntu 16.04 LTS,系统默认的Python版本是2.7.12,我想要安装3.6和其他的版本.   比较方便的是腾讯云已经默认安装好了git和curl ...

  6. Ubuntu安装Python版本管理工具pyenv

    gyf@gyf-VirtualBox:~$ git clone https://github.com/yyuu/pyenv.git ~/.pyenvCloning into '/home/gyf/.p ...

  7. Python多版本管理器-pyenv 介绍及部署记录

    一. pyenv简单介绍 在日常运维中, 经常遇到这样的情况: 系统自带的Python是2.x,而业务部署需要Python 3.x 环境, 此时需要在系统中安装多个Python版本,但又不能影响系统自 ...

  8. centos下python多版本管理(pyenv+python+virtualenv+ipython)

    pyenv是个多版本python管理器,可以同时管理多个python版本共存,如pypy,miniconde等等 1 环境准备 安装相关软件和pyenv1.1 安装相关软件yum install -y ...

  9. 在Ubuntu 18.04中安装pyenv(Python多版本管理工具)

    最近正在重头梳理Python的基础知识,为了更好地使用Python进行开发,防止发生版本混乱(不同的第三方库有可能因为Python版本不兼容而报错),所以需要使用pyenv进行版本管理. *** 通常 ...

随机推荐

  1. # 20175333曹雅坤《Java程序设计》第四周学习总结

    教材学习内容总结 第五章:子类与继承 5.1子类与父类:关键字extends 5.2子类的继承性:如果子类与父类在一个包中,除了private其他都可以继承:如果不在一个包中,则private和友好都 ...

  2. Qt+mpg123+openal播放MP3流

    #ifndef PLAYSTREAM_H #define PLAYSTREAM_H #include <QObject> #include "../libMPG123/mpg12 ...

  3. 统计信息不准导致sql性能下降

    某局的预生产系统一条sql语句20分钟执行完,上线以后2个小时没执行出来,在预生产执行计划是hash join在生产是nested loop,通过awr基表wri$_optstat_tab_histo ...

  4. wireshark & fiddler

    wireshark display filterhttps://www.wireshark.org/docs/wsug_html_chunked/ChWorkBuildDisplayFilterSec ...

  5. Union 与 Union all 的区别【坑】

    UNION操作符用于合并两个或多个SELECT语句的结果集 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必 ...

  6. Python env使用(virtualenv)

    前言 Python 的 virualenv 模块闻名已久,乘着有点时间,学习一下 变更记录 # 19.3.26  创建文章 # 19.3.27  完善文章 正文 安装 pip install virt ...

  7. mysql-视图、触发器、事务、存储过程、流程控制

    目录 视图 触发器 事务 存储过程 流程控制 一.视图 视图是由查询结果构成的一张虚拟表,和真实的表一样,带有名称的列和行数据 强调:视图是永久存储的,但是视图存储的不是数据,只是一条sql语句 视图 ...

  8. 搭建Linux运行环境-虚拟机

    1.虚拟机软件介绍 虚拟机(Virtual Machina)软件就是一套特殊的软件,它可以作为系统独立运行,也可以运行与系统之上. 若是运行与系统之上的虚拟机软件,在一台电脑(PC或笔记本等)上安装虚 ...

  9. UiAutomator2.0 - Toast信息的验证

    目录 问题:在做UI自动化测试时,偶尔会碰到 Toast 这种提示信息(如图),通过Uiautomatorviewer 无法获该类控件的信息.所以无法验证,该条case不能实现.然后就没然后了... ...

  10. 如何在Django中配置MySQL数据库

    直接上图 在项目中直接找到settings 文件 第一步       原始Django自带数据库 第二步将配置改成MySQL的数据 第三步  在__init__文件中告知Django使用MySQL数据 ...