一文读懂Python版本管理工具Pyenv使用

pyenv简单介绍

在日常运维中, 经常遇到这样的情况: 系统自带的Python是2.x,而业务部署需要Python 3.x 环境, 此时需要在系统中安装多个Python版本,但又不能影响系统自带的Python 版本,即需要实现Python的多版本环境共存, pyenv就是这样一个Python版本管理器, 可以同时管理多个python版本共存! 简单的说,pyenv 可以根据需求使用户在系统里安装和管理多个Python 版本:

- 配置当前用户的python的版本;
- 配置当前shell的python版本;
- 配置某个项目(目录及子目录)的python版本;
- 配置多个虚拟环境.

由于python的各种优点,当前学习及使用python的人越来越多, 学习python有一个不容忽视的问题就是python的版本问题! 到现在为止,python的版本有很多,但是问题在于python2与python3的区别。python3的对一些模块进行了改变,导致了python2写的代码有的不被python3兼容,从而导致程序运行报错。因此,在学习和工作中使用python的时候,最好是安装一个pyenv管理器, 多安装几个python版本进行管理, 然后再针对不同项目安装各自项目的python虚拟环境, 相互隔离, 这样便于使用和管理。

pyenv工作原理

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

下面看看Python版本管理工具Pyenv使用

  • pyenv:管理 Python 本身的多个版本;
  • pyenv-virtualenv:管理不同版本 Python 的虚拟环境;

linux安装

1. 首先安装所需依赖,在Ubuntu/Debian/Mint(Debian系)上:

sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

2. 接着执行

$ curl https://pyenv.run | bash

3. 重启shell

exec $SHELL

4. 查看~/.bashrc文件,如果文件最末尾处没有以下三行代码,则在末尾处追加以下内容。如果有,忽略步骤4。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

接着执行: source ~/.bashrc
最后重启shell以生效: exec "$SHELL"

win10安装

1. 点击以下地址,下载所需文件:https://github.com/pyenv-win/pyenv-win/archive/master.zip

2. 在home目录下创建 .pyenv 文件夹,解压刚才下载的文件,将其中的pyenv-win文件夹整个移动至 home/.pyenv 文件夹下

3. 接着打开powershell或者windows terminal,逐行输入并回车以下命令

[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

使用

pyenv常用命令

# 查看pyenv当前支持哪些python版本
pyenv install --list

# 安装指定的python版本
pyenv install xxx

# 列出本地pyenv中所有可用的python版本
pyenv versions

# 卸载某个版本
pyenv uninstall 3.9.1

# 为所有已安装的可执行文件创建shims,因此,每当你增删了Python版本或带有可执行文件的包(如pip以后,都应该执行一次本命令)
pyenv rehash

使用pyenv安装指定的python版本

在线安装

离线安装

1. 首先下载离线的包,如3.7.5的网址为: https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tar.xz

2. 接着在home的.pyenv目录下建一个cache的文件夹,将下载下来的包移动至这个文件夹

在命令行中cd进这个目录,然后执行pyenv install 3.7.5即可

切换python版本

  1. pyenv global xxx  - 全局环境,在未再次使用 global切换环境之前,一直使用此环境
  2. pyenv local xxx -  本次登录环境。重启后,则环境失效,并返回当前global的环境
  3. pyenv shell xxx -  局部(临时)环境。关闭命令行窗口,则环境失效,并返回当前global的环境

python版本的优先级顺序:shell > local> global
注:pyenv会从当前目录开始向上逐级查找.python-versiob文件,直到根目录为止,若找不到,则使用global版本。

pyenv which python  # 查看当前的python版本具体的位置

完全删除pyenv

rm -fr ~/.pyenv

并且清理掉~/.bashrc文件中写入末尾的三行
接着执行: source ~/.bashrc
最后重启shell以生效: exec "$SHELL"

以上就是一文读懂Python版本管理工具Pyenv使用的详细内容,更多关于Python版本管理Pyenv使用的资料请关注我们其它相关文章!

(0)

相关推荐

  • 详解使用 pyenv 管理多个版本 python 环境

    随着同时开发的项目越来越多,需要不停的在各个不同版本的 python 环境之间切换,所以想到了pyenv.以前一直使用的 virtualenv只能管理同一个 python 版本下第三方库的版本,但是对于这种需要在多个不同版本之间切换的 case,就只能使用 pyenv 了. 安装 运行下面的命令会自动下载安装 $ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer |

  • Python中Pyenv virtualenv插件的使用

    介绍:pyenv-virtualenv是pyenv的一个插件,作用如同virtualenv一样,是用来管理虚拟环境的,配合pyenv主体使用可做到python的版本管理及虚拟环境的管理 安装:在正常安装了pyenv的情况下,pyenv-virtualenv也是随之被安装上的 1. 创建虚拟环境 在test目录下,创建一个名字为venv38,python版本为3.8.5的虚拟环境 pyenv virtualenv 3.8.5 venv38 # 如果不加3.8.5即不指定版本,则会使用当前系统的py

  • Python使用pyenv实现多环境管理

    1 背景&概述 因某些需求,需要安装 TensorFlow ,很自然地在终端敲下了以下命令: pip install tensorflow 然后... 好家伙??? 居然没有?? 因为是 Python 3.9 ,去 pypi 搜索了,居然还真没有支持的,最高只有 Python 3.8 : 于是便考虑一个多版本的 Python 环境,碰巧就在 Github 上看到了一个 22.3k 的东西: 这就是 pyenv ,一个简单的 Python 版本管理器,可以轻松地在各个 Python 版本之间进行切

  • python多环境切换及pyenv使用过程详解

    1.安装pyenv    https://github.com/pyenv/pyenv-installer curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 下载如下报错,则安装nss: yum -y update nss 2.添加环境变量 vim /root/.bashrc export PATH="/root/.pyenv/bin:$PATH" eval &q

  • 详解pyenv下使用python matplotlib模块的问题解决

    先来描述一下我遇到的问题,在进行matplotlib学习时, plot.show() 总是无法成功运行,总是会报一个错: RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for

  • python pyenv多版本管理工具的使用

    项目地址github pyenv does... 改变每个用户系统级别的 python 版本 为每个项目提供不同的 python 版本 安装 克隆到本地即为安装,默认目录是 ~/.pyenv ,可以通过 $HOME/.pyenv 改变安装位置. $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv centos 下需要安装依赖 yum install -y readline readline-devel readline-static o

  • 一文读懂Python版本管理工具Pyenv使用

    pyenv简单介绍 在日常运维中, 经常遇到这样的情况: 系统自带的Python是2.x,而业务部署需要Python 3.x 环境, 此时需要在系统中安装多个Python版本,但又不能影响系统自带的Python 版本,即需要实现Python的多版本环境共存, pyenv就是这样一个Python版本管理器, 可以同时管理多个python版本共存! 简单的说,pyenv 可以根据需求使用户在系统里安装和管理多个Python 版本: - 配置当前用户的python的版本; - 配置当前shell的py

  • 一文读懂Python 枚举

    enum 是一组绑定到唯一常数值的符号名称,并且具备可迭代性和可比较性的特性.我们可以使用 enum 创建具有良好定义的标识符,而不是直接使用魔法字符串或整数,也便于开发工程师的代码维护. 创建枚举 我们可以使用 class 语法创建一个枚举类型,方便我们进行读写,另外,根据函数 API 的描述定义,我们可以创建一个 enum 的子类,如下: from enum import Enum class HttpStatus(Enum): OK = 200 BAD_REQUEST = 400 FORB

  • 一文读懂python Scrapy爬虫框架

    Scrapy是什么? 先看官网上的说明,http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/overview.html Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫. S

  • 一文读懂数据库管理工具 Navicat 和 DBeaver

    Navicat "Navicat" 是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL.Oracle.PostgreSQL.SQLite.SQL Server.MariaDB 和/或 MongoDB 等不同类型的数据库,并支持管理某些云数据库,例如阿里云.‎腾讯云.Navicat 和 Navicat Premium 都可以用来连接和管理数据库.Navicat Premium 支持更多的数据库,并且功能更多,但是这两个都是收费软件. Navicat Premium 15:ht

  • Python超有用的多版本管理工具pyenv

    目录 1.安装与配置 2.使用pyenv 3.总结 前言: 我们在平时的项目开发或者学习中,有可能使用不同的Python版本,大家都知道Python的版本非常多,如果我们把需要的不同版本的Python都下载到服务器上,管理起来会非常困难,多版本并存又容易互相干扰,搞不好整个服务器的Python环境会因此乱掉导致不能正常工作,那么我们应该如何解决Python多版本共存于管理的问题呢?接下来就来介绍一个Python环境管理工具:pyenv,有了它,你就可以轻松的在多个版本的Python之间自由切换,

  • 一文读懂c++11 Lambda表达式

    1.简介 1.1定义 C++11新增了很多特性,Lambda表达式(Lambda expression)就是其中之一,很多语言都提供了 Lambda 表达式,如 Python,Java ,C#等.本质上, Lambda 表达式是一个可调用的代码单元[1]^{[1]}[1].实际上是一个闭包(closure),类似于一个匿名函数,拥有捕获所在作用域中变量的能力,能够将函数做为对象一样使用,通常用来实现回调函数.代理等功能.Lambda表达式是函数式编程的基础,C++11引入了Lambda则弥补了C

  • 一文读懂modbus slave和modbus poll使用说明

    modbus slave和modbus poll使用说明 1.使用环境: win7/win10  32/64位系统  Virtual Serial Port Driver 9.0 虚拟com端口工具 2.说明: 最近项目开发使用到了modbus协议,由于刚接触这个协议,在使用第三方工具进行调试的时候使用到了modbus poll和modbus slave工具,以下是简单的使用记录,希望以后对需要者有所帮助. 3.modbus poll和modbus slave是一款实用的modbus开发和调试工

  • 一文读懂Spring Cloud-Hystrix

    Hystrix概述 Hystrix:断路器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力. hystrix可以实现降级和熔断: 降级 调用远程服务失败(宕机.500错.超时),可以降级执行当前服务中的一段代码,向客户端返回结果 快速失败 熔断 当访问量过大,出现大量失败,可以做过热保护,断开远程服务不再调用 限流 防止故障传播.雪崩效应 在微服务系统中,服务之间进行依赖,避免有调用其中服务失败,而引起其他服务大范围宕机,造成雪崩效应,hystrix

  • 一文搞懂Python中subprocess模块的使用

    目录 简介 常用方法和接口 subprocess.run()解析 subprocess.Popen()解析 Popen 对象方法 subprocess.run()案例 subprocess.call()案例 subprocess.check_call()案例 subprocess.getstatusoutput()案例 subprocess.getoutput()案例 subprocess.check_output()案例 subprocess.Popen()综合案例 简介 subprocess

  • 一篇文章读懂Python赋值与拷贝

    变量与赋值 在 Python 中,一切皆为对象,对象通过「变量名」引用,「变量名」更确切的叫法是「名字」,好比我们每个人都有自己的名字一样,咱们通过名字来代指某个人,代码里面通过名字来指代某个对象. 变量赋值就是给对象绑定一个名字,赋值并不会拷贝对象.好比我们出生的时候父母就要给我们取一个名字一样,给人取个绰号并不来多出一个人来,只是多一个名字罢了. 两个对象做比较有两种方式,分别是:is 与 == ,is比较的是两个对象是否相同,通过对象的ID值可识别是否为相同对象,==比较的是两个对象的值是

随机推荐