在学习和利用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. django 模型models

    1. django 模型models 常用字段          1.models.AutoField 自增列 = int(11) 如果没有的话,默认会生成一个名称为 id 的列 如果要显式的自定义一 ...

  2. windows环境下curl 安装和使用

    原文:https://blog.csdn.net/qq_21126979/article/details/78690960?locationNum=10&fps=1 一.curl 安装 cur ...

  3. CodeForces 587 E.Duff as a Queen 线段树动态维护区间线性基

    https://codeforces.com/contest/587/problem/E 一个序列, 1区间异或操作 2查询区间子集异或种类数 题解 解题思路大同小异,都是利用异或的性质进行转化,st ...

  4. go语言熟知的开源项目

    go语言在国内是比较火的,并且好多公司都用go语言进行重构之前的系统,今天来看下基本大家都知道的go语言的开源项目 1.Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用 ...

  5. java - day004 - 数组排序,插入,冒泡

    // 判断string 是否相等不能用 == 使用 equal 方法 Arrays.sort(数组);  数组排序算法 对基本类型. 优化的快速排序算法 对引用类型, 优化的合并排序算法

  6. Uncaught TypeError: Cannot read property ‘split’ of undefined

    问题 :Uncaught TypeError: Cannot read property ‘split’ of undefinedat HTMLLIElement. split()切割的问题 因为遍历 ...

  7. P4098 [HEOI2013]ALO

    最近这个家伙去哪了,为啥一直不更博客了呢?原来他被老师逼迫去补了一周的文化课,以至于不会把班里的平均分拉掉太多.好了,我们来看下面这道题目: P4098 [HEOI2013]ALO 题目描述 Welc ...

  8. spring-cloud-hystrix-dasboard服务调用监控

    除了隔离依赖服务的调用以外,hystrix还提供了准实时的调用监控(hystrix dashboard),hystrxi会持续的记录所有通过hyxtrix发起的请求的执行信息,并以统计报表和图形的形式 ...

  9. SpringMVC 手动控制事务提交 【转】

    1.配置文件 applicationContext.xml: <bean id="txManager" class="org.springframework.jdb ...

  10. python学习-抓取知乎图片

    #!/bin/usr/env python3 __author__ = 'nxz' """ 抓取知乎图片webdriver Chromedriver驱动需要安装,并指定d ...