Ubuntu update-alternatives 安装/管理多版本 Python3及PIP3

2023-05-16

Ubuntu update-alternatives 安装/管理多版本 Python3及PIP3

  • 前言
  • 安装python
  • 安装对应版本pip
  • update-alternatives 切换python3 环境

前言

在ubuntu系统上,使用apt命令安装python只能获取到ubuntu发布的最高版本。例如我使用的ubuntu18.04只能安装python 3.6。在日常使用过程中,经常会遇到需要不同python版本的第三方软件,甚至有些工程强行指定python版本,版本高了也不行。
所以我们需要在一台机器上安装多个python版本来应对,同时也要能方便切换版本。
这也会带出对应python版本切换pip的问题。本文目的在于讲述完整的如何管理多版本python及pip的配置。

安装python

查看当前生效的python3 版本

python3 --version
Python 3.6.9

添加deadsnakes ppa源 来下载各个版本的python。
例如我要安装一个 python 3.7

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.7

安装对应版本pip

查看当前pip3版本

pip3 -V
pip 22.3 from /home/gel-x/.local/lib/python3.7/site-packages/pip (python 3.7)

安装指定pip版本

# 获取安装脚本,若无curl 需要先 sudo apt install curl
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# 安装对应版本 pip
python3.7 get-pip.py

通过get-pip.py安装的pip默认会放到/home/${USER}/.local/bin 目录下。
查看PATH 是否包含了这个目录,若无则需要添加到系统路径。

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
# 添加~/.local/bin 到系统路径
$ source .profile
# .profile 内容如下:
$ cat .profile 
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

update-alternatives 切换python3 环境

通过系统工具update-alternatives 可以配置和切换当前系统中的python3 环境做到多版本管理。

update-alternatives是linux debian 提供的一个多版管理器,其本质是为同名软件创建一个软连接,并可以设置优先级和方便的切换不同的版本。它不仅仅可以用于python,pip3,java等许多需要多版本管理的软件都可以通过update-alternatives来方便的切换版本。

$ update-alternatives --help
用法:update-alternatives [<选项> ...] <命令>
命令:
  --install <链接> <名称> <路径> <优先级>
    [--slave <链接> <名称> <路径>] ...
                           在系统中加入一组候选项。
  --remove <名称> <路径><名称> 替换组中去除 <路径> 项。
  --remove-all <名称>      从替换系统中删除 <名称> 替换组。
  --auto <名称><名称> 的主链接切换到自动模式。
  --display <名称>         显示关于 <名称> 替换组的信息。
  --query <名称>           机器可读版的 --display <名称>.
  --list <名称>            列出 <名称> 替换组中所有的可用候选项。
  --get-selections         列出主要候选项名称以及它们的状态。
  --set-selections         从标准输入中读入候选项的状态。
  --config <名称>          列出 <名称> 替换组中的可选项,并就使用其中哪一个,征询用户的意见。
  --set <名称> <路径><路径> 设置为 <名称> 的候选项。
  --all                    对所有可选项一一调用 --config 命令。

<链接> 是指向 /etc/alternatives/<名称> 的符号链接。(如 /usr/bin/pager)
<名称> 是该链接替换组的主控名。(如 pager)
<路径> 是候选项目标文件的位置。(如 /usr/bin/less)
<优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。
..........

下面以python3为列,说明配置方法。

# 将本地下载好的python3 版本导入update-alternatives
# 默认优先级高的会被设置为自动模式
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 0
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2

# 查看当前环境中已有的python3 版本
~$ sudo update-alternatives --list python3
/usr/bin/python3.6
/usr/bin/python3.7

# 切换想要使用的python3 版本
~$ sudo update-alternatives --config python3 
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/python3.6   2         auto mode
* 1            /usr/bin/python3.6   2         manual mode
  2            /usr/bin/python3.7   0         manual mode

Press <enter> to keep the current choice[*], or type selection number: 
# 输入对应python3版本的 Selection num 即可

同理可以将pip3 也通过update-alternatives配置切换,不过实际使用情况看,pip3默认保存最高版本的可以兼容大部分情况,还没有遇到需要切换的情景。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu update-alternatives 安装/管理多版本 Python3及PIP3 的相关文章

  • Method threw ‘java.lang.IllegalStateException‘ exception. Cannot evaluate org.apache.hadoop.mapreduc

    在本地调试hadoop mapreduc时断点看到这个信息 xff0c 且程序执行不成功 xff0c 以为是这个问题导致的 xff0c 网上查了很久也没有解决办法 xff0c 后来发现这个并不影响主要功能 如果不想看到它可以在idea进行配
  • Thread.sleep()关于让不让出cpu时间片

    1 证明 思路 xff1a 反证法 假如Thread sleep xff0c 不让出cpu时间片 xff0c 创建1000个线程 xff0c 每个线程执行sleep 方法 则cpu的使用率一定很高 xff0c 贴上代码 xff1a publ
  • 阿里巴巴校园招聘2019面试总结

    写在前面 面的岗位是c 43 43 开发 xff0c 二面跪了 xff0c 但依然想些出来分享一下 博主4月份开始着手找实习 xff0c 期间面过两次阿里都挂在第一面 xff0c 7月份至今在科大讯飞实习 xff0c 这期间内推阿里 xff
  • YY直播黑盒测试工程师笔试题

    1 请写出二进制数10111101对应的八进制 十六进制 十进制 2 黑盒测试用例的设计方法有哪些 xff1f 3 你所在项目用到的互联网协议有哪些 xff1f 请列举 4 数据库DB有两张表 xff0c 一张学生信息表Student xf
  • 如何判断是客户端问题还是服务器问题

    举个例子 xff0c 下载了个词典PC客户端 xff0c 发现词典上的一些解析出现是HTML代码 xff0c 例如 lt b gt lt b gt 什么的 xff0c 用fiddler抓包一下相关的接口jsonapi xff0c 发现相应的
  • U盘系统、格式化等问题的解决办法

    一 U盘快速格式化与正常格式化区别 1 快速格式化时间非常短 基本上瞬间完成 xff0c 如果硬盘有坏道 xff0c 不会出现任何提示 正常格式化时间非常的长 1 2 3小时不等 xff0c 但会在格式化的时候全面检测硬盘 xff0c 如果
  • python经典书籍推荐-7本经典的Python书籍,你都读过了么?

    许多程序员都认为Python是最适合作为入门的编程语言 xff0c 而有的程序员却认为Python是你应该学的最后一门编程语言 xff0c 无论如何 xff0c 毋庸置疑Python是一门非常流行的编程语言 xff0c 根据TIOBE In
  • python画轨迹曲线-matplotlib绘制随机行走轨迹图

    coding utf 8 author 61 39 pythonwu 39 date 61 34 2018 6 15 16 09 34 from random import choice randint import matplotlib
  • python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点 xff0c 这也是由于游戏本身的火热造成的结果 xff0c 所以每年都有很多人在关注着游戏编程 介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家 xff0c 希望对想要了解和学习游戏编程的朋友能够有
  • 用python画关系网络图-使用Python的networkx绘制精美网络图教程

    最近因为数学建模3天速成Python 然后做了一道网络的题 xff0c 要画网络图 在网上找了一些 xff0c 发现都是一些很基础的丑陋红点图 xff0c 并且关于网络的一些算法也没有讲 xff0c 于是自己进http networkx g
  • reactor和proactor模式

    首先就第一篇 Reactor模式 xff0c 或者叫反应器模式 做一下笔记 xff1a 刚开店做生意 xff0c 老板为了给顾客一个美好的印象 xff0c 给顾客最好的服务 xff0c 一对一 随着经营的生意越来越好 xff0c 顾客多了
  • 进程间通信的方式——信号、管道、消息队列、共享内存

    进程间通信的方式 信号 管道 消息队列 共享内存 多进程 xff1a 首先 xff0c 先来讲一下fork之后 xff0c 发生了什么事情 由fork创建的新进程被称为子进程 xff08 child process xff09 该函数被调用
  • 利用netstat查看http为短连接还是长连接?

    最近 xff0c 公司在做Redis替换memcached的项目 xff0c 那mc可以设置是长连接 xff0c 那组件中的Redis到底用的是长连接还是短连接呢 xff1f 大牛军哥只给我一个命令 xff1a netstat anp gr
  • 系统总体结构设计

    系统总体结构设计 系统设计工作应该自顶向下地进行 首先设计总体结构 xff0c 然后再逐层深入 xff0c 直至进行每一个模块的设计 总体设计主要是指在系统分析的基础上 xff0c 对整个系统的划分 xff08 子系统 xff09 机器设备
  • 业务层 、服务层、数据层、表现层

    表现层 xff1a 它一方面为用户提供了交互的工具 xff0c 另一方面也为显示和提交数据实现了一定的逻辑 xff08 页面展示和各种交互包括提交 xff09 业务逻辑层 xff1a 包含了系统所需要的所有功能上的算法和计算过程 xff0c
  • Java FTPClient上传图片

    首先要使用common net的包 xff1a FTP服务器搭建过程 xff1a https mp csdn net postedit 88722082 package com taotao test ftp import java io
  • 直播疑难杂症排查(7)— 黑屏、花屏、闪屏问题

    本文是 直播疑难杂症排查 系列的第七篇文章 xff0c 我们来重点看看直播中常见的各种黑屏 花屏 闪屏问题 首先我们要明白 xff0c 黑屏 花屏 闪屏等问题 xff0c 可能是推流端的问题 xff0c 也可能是播放器的问题 xff0c 遇
  • 视频编码:H.264编码

    本文参考毕厚杰老师 新一代视频压缩编码标准 H 264 AVC 一书以及雷霄骅博客 视音频编解码技术零基础学习方法 整理 1 概念部分 xff1a H 264编码 xff1a 视频编解码技术有两套标准 xff0c 国际电联 xff08 IT
  • war包方式部署solo博客

    solo xff0c 一款小而美的博客系统 xff0c GitHub xff1a https github com b3log solo 环境和文件准备 服务器 xff1a 用的阿里云服务器 xff0c 系统是 CentOS 7 3 64
  • 游戏服务器之网关实现

    网关需要与客户端保证连接 这里网关使用Netty4来做为网络通信框架 它也是目前在Java游戏服务器开发中 xff0c 长连接使用最多的框架 1 xff0c 管理与客户端的连接 客户端连接到网关之后 xff0c 并且验证过之后 xff0c

随机推荐

  • zeromq源码分析笔记之准备

    zeromq这个库主要用于进程通信 xff0c 包括本地进程 网络通信 xff0c 涉及到一些基础知识 xff0c 主要包括管道通信 xff0c socket编程的内容 xff0c 反应器模式 xff08 使用IO多路复用实现 xff09
  • MySQL灵魂十连

    1 SQL语句执行流程 MySQL大体上可分为Server层和存储引擎层 两部分 Server层 xff1a 连接器 xff1a TCP握手后服务器来验证登陆用户身份 xff0c A用户创建连接后 xff0c 管理员对A用户权限修改了也不会
  • 前端面试知识点

    本专题按照以下几个方便进行整理 xff1a HTTP amp amp 浏览器HTML amp amp CSSJS TS ES6VueReact构建工具 amp amp 工程化性能优化 适合初次全面复习的同学 xff0c 查缺补漏 xff0c
  • 使用matplotlib绘制动画

    使用matplotlib绘制动画的步骤 本文采用moviewriter来绘制 xff0c 避免采用matplotlib animition的动画绘制方法 xff0c 将动画简化为图片一帧一帧播放 使用总共三步 xff0c 如下代码所示 补充
  • CUDA与cuDNN

    1 什么是CUDA CUDA ComputeUnified Device Architecture xff0c 是显卡厂商NVIDIA推出的运算平台 CUDA是一种由NVIDIA推出的通用并行计算架构 xff0c 该架构使GPU能够解决复杂
  • JAVAFX 简易项目构建从0到1全流程

    1 安装JDK 2 安装SceneBuilder 可集成到eclipse等IDE中 3 在IDE中新建Java Project项目 并按设计的架构设计建立代码架构 例如 xff1a 4 新建要搭建的界面fxml文件 xff0c 用Scene
  • Pandas DataFrame

    http pandas pydata org pandas docs stable api html dataframe 构造函数 方法描述DataFrame data index columns dtype copy 构造数据框 属性和数
  • Android Settings定制

    android frameworks base packages SettingsLib 7 0重构Settings后多出来的部分 android frameworks base packages SettingsProvider sett
  • GNOME图形界面的基本操作

    成功登录进入CentOS系统之后 xff0c 我们首先看到的桌面就是GNOME图形界面 xff0c 下面来看一下相关的基本操作 个性化设置 1 xff0c 设置屏幕分辨率 进入菜单 2 xff0c 更换桌面背景 进入下面菜单 选择一张背景图
  • 连接服务器VNC

    1 xff0c 启动vnc vncserver 2 xff0c 提示输入密码 3 xff0c Would you like to enter a view only password y n 选择n 4 xff0c 会生成一个端口号 5 更
  • Android基础知识(七):Activity互调之间的生命周期变化与onNewIntent()触发机制

    Android基础知识 xff08 七 xff09 xff1a Activity互调之间的生命周期变化与onNewIntent 触发机制 一 Activity切换的生命周期 前面Android基础知识 xff08 五 xff09 xff1a
  • 二叉树节点和度的关系及特点

    写在前边的话 xff1a 你的支持是我写作的动力 xff0c 有帮助到你的话麻烦点赞 加收藏 呦 感激不尽 xff01 如有错误也请留言指正 目录 一 完全二叉树 节点总数的特点 二 二叉树 度的特点 1 n0与n2的关系 2 节点总数和度
  • 平衡二叉树的最大深度和最少节点数

    写在前边的话 xff1a 你的支持是我写作的动力 xff0c 有帮助到你的话麻烦点赞加收藏呦 感激不尽 xff01 如有错误也请留言指正 考研数据结构练习 xff0c 欢迎订阅我的专辑 考研数据结构题型分类讲解练习 目录 一 知识点 二 例
  • dataturks解析

    34 34 34 根据大json写小json 34 34 34 with open 39 pay json 39 as f datas 61 f readlines for data in datas data 61 data strip
  • STM32串口之环形队列接收数据

    原文链接 xff1a STM32串口之环形队列接收数据 码代码的应该学数据结构都学过队列 环形队列是队列的一种特殊形式 xff0c 应用挺广泛的 因为有太多文章关于这方面的内容 xff0c 理论知识可以看别人的 xff0c 下面写得挺好的
  • Linux使用ssh远程登陆

    什么是SSH xff1f 简单说 xff0c SSH是一种网络协议 xff0c 用于计算机之间的加密登录 如果一个用户从本地计算机 xff0c 使用SSH协议登录另一台远程计算机 xff0c 我们就可以认为 xff0c 这种登录是安全的 x
  • 使用Vscode 编译 开发 调试 STM32单片机 VScode+openocd+STM32CubeMX+GDB

    Vscode 编译 开发 调试 STM32单片机 为什么记录这篇文章环境准备软件及工具下载软件安装 VScode功能搭建使用STM32CubeMX生成带有makefile的工程配置VScode工程 使用vscode 开发 xff0c 编译
  • 出错信息“module or group tools is not avaliable”

    出错信息 module or group tools is not avaliable 使用yum安装软件时 xff0c 有时会出现这个问题 xff0c 可能是需要安装的软件来自第三方 解决办法 yum install epel relea
  • ubuntu 自动登录/图形界面启动流程

    ubuntu 自动登录 图形界面启动流程 启动流程配置greeter和desktop自动登录配置自动登录后进入的desktop总结 这两天在Jetson nano 上想做一个跳过用户界面直接自动登录到桌面的功能 本来很简单的在System
  • Ubuntu update-alternatives 安装/管理多版本 Python3及PIP3

    Ubuntu update alternatives 安装 管理多版本 Python3及PIP3 前言安装python安装对应版本pipupdate alternatives 切换python3 环境 前言 在ubuntu系统上 xff0c