Ubuntu Python 多版本安装

2023-05-16

概述

由于 Python 3 有几次较为跳跃的更新,导致大量使用 Python 3 作为开发工具的软件会对 Python 3 的版本进行严格限制,如限制使用 Python 3.8 - Python 3.9 版本。这要求开发者开发环境内应具有多版本的 python 。在 Ubuntu 等 Linux 系统下,Python 的安装都是使用的源码编译方法,这对一些 Python 开发者并不友好,本文会给出一种较为简单的多版本 Python 安装方法。

安装

笔者使用的 Ubuntu 22.04 自带有 Python 3.10 版本的 Python ,可以使用以下命令查看系统自带的 Python 版本:

python3 --version

笔者希望安装 Python 3.9 并创建相关虚拟环境。

首先,我们需要引入新的 apt 源,如下:

add-apt-repository ppa:deadsnakes/ppa

deadsnakes 在其软件仓库中给出了大量 Python 版本的安装包,这些安装包都是预编译好的,我们不需要进行进一步的编译。

以安装 Python 3.9 为例,命令如下:

apt install python3.9

安装完成后,我们可以使用以下命令查看 Python3.9 是否安装成功:

python3.9 --version

接下来,由于有了多版本 Python ,那么设置虚拟环境是必须的,使用以下命令安装虚拟环境套件:

apt install python3.9-venv

使用以下命令创建虚拟环境:

python3.9 -m venv test
cd test

并使用 source bin/activate 命令激活虚拟环境,读者可以在虚拟环境中使用 pip 命令进行安装相关 pip 包。在虚拟环境激活后,python3 --version 的输出也发生了改变,说明虚拟环境中的 Python 3.9 掩盖了外部的 Python 版本,这对于多版本管理是有用的。最后,读者可以使用 deactivate 退出虚拟环境。

限于篇幅,我们无法介绍关于 venv 的全部情况,请读者自行参考 文档。

最后,有部分读者可能会安装一些特殊的 pip 包,如 fastecdsa 等,这些包都是使用 C 语言编写,安装时需要编译,为解决这些包的问题,我建议读者安装以下库:

apt install python3.9-dev

该库会安装 Python3.9 的开发工具,对于需要编译安装的库来说,该包是必要的。

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

Ubuntu Python 多版本安装 的相关文章

  • 让你的 STM32Cube KEILV5 + HAL库工程支持C++开发

    前言 最近这段时间在弄一个新的STM32F4的项目 xff0c 因为工程比较庞大 xff0c 然后各种类型也比较复杂 xff0c 在封装整理的时候就非常头疼 xff0c 很想通过C 43 43 的类 xff0c 继承 xff0c 多态的方式
  • ESP8266 TCP ERROR CLOSED的常见原因及解决办法

    前言 最近在使用ESP8266的简单AT指令做串口透传 xff0c 本来想着和HC 05的蓝牙串口差不多简单吧 xff0c xff0c 结果发现ESP8266似乎并没有像HC 05那么易用 xff0c 需要配置的东西还挺多的 xff0c 而
  • (二)TCP客户端/服务器通信------select函数

    xff08 一 xff09 select函数 该函数允许进程指示内核等待多个事件中的任何一个发生 xff0c 并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它 也就是说 xff0c 我们调用select告知内核对哪些描述符 xff0
  • QGC参数请求流程(第一集)

    xff31 xff27 xff23 参数请求流程 xff08 第一集 xff09 联系作者 QQ 843230304 如流程图所示 xff1a 对应 xff31 xff27 xff23 的ParameterManager模块 xff0c 这
  • 航模螺旋桨型号

    1 有两个重要的参数 xff0c 桨直径和桨螺距 xff0c 单位均为英寸 比如8060桨 xff0c 就是说这个桨直径是8英寸 即8 2 54 xff1d 20 32厘米 螺距则为6英寸 螺距则代表桨旋转一周前进的距离
  • 用Java代码实现选择排序法

    package com hu controller public class Test public static void main String args 声明一个整形的数组 并手动输入几个数 int arr 61 11 665 985
  • C语言递归的方法实现斐波那契

    int fib int n void main int n 61 10 int result 61 fib n printf 34 d 34 result int fib int n if n gt 61 3 原题目这里是if n gt 6
  • 支持ie7,ie8,ff,不完全支持ie6的js日期控件

    var MonthDNum 61 new Array 0 31 28 31 30 31 30 31 31 30 31 30 31 var MonthText 61 new Array 34 34 34 一月 34 34 二月 34 34 三
  • oracle主键生成方式

    oracle主键 两种方法 自增主键sequence SYS GUID 生成唯一序列 一 自增主键 创建一个表 create table test NID int PRIMARY KEY oracle主键 两种方法 自增主键sequence
  • Vmware vSphere(一)安装vSphere client 以及 ubuntu

    大致流程见附件 VMware Tools 安装 xff0c 使用 xff0c 命令 xff1a vmware toolbox http blog csdn net dzassn article details 1633577 vmware
  • syslog 协议及格式

    官方文档 xff1a http tools ietf org html rfc5424 6 Syslog Message Format 6 2 HEADER 6 2 1 PRI PRI 61 lt Facility 0 23 8 43 Se
  • chm打不开

    chm文件打开看不到右边的内容 1 操作系统为了安全对下载的chm文件进行了锁定 xff0c 只需要在打开前右键单击该chm文件选择 属性 xff0c 然后在 常规 选项卡的下方单击 解除锁定 按钮就可以了 2 如果还是不能看 xff0c
  • 形式语言与自动机笔记

  • 关于Keil开发C51单片机的头文件问题

    我用的德飞莱的资料 在学习STM32中回想起学C51单片机时 xff0c 有个问题一直没解决 xff0c 就是头文件regx52 h和reg52 h的区别 因为在引用regx52 h时 xff0c 可以直接用P1 1 P3 2这些小口 但是
  • JAXB(二)Map属性映射

    JAXB support Collection List Set does not support Map not Collection XmlAdapter lt ValueType BoundType gt use List to im
  • JAXB(三)xsd 验证

    现在只有最简单的关联映射验证 关键点 xff1a jaxbMarshaller setSchema sch 还不会验证集合类型 xff1a List Set Map 以后再把JAXB xff08 二 xff09 的例子加上 xff0c 64
  • jstat

    http blog csdn net swpihchj article details 8197204
  • Effctive Java 笔记

    8 重写equals xff0c 只适合值类 xff08 枚举类除外 xff09 自反性 xff1a x equals x 61 61 true 对称性 x equals y 61 61 true 必然 y equals x 61 61 t
  • maven

    http blog csdn net zjf280441589 article details 53044308 http www infoq com maven Porject groupId 43 artifactId 43 versi
  • Linux第二课:Ubuntu 操作入门(内含:1Ubuntu 下打开终端+2 Linux 文件属性+3 设置屏幕+4 系统关机与重启+5.文件浏览器)

    Ubuntu 操作入门 2 2 1Ubuntu 下打开终端 方法1 点击 Ubuntu 桌面左上角图标进入搜索框 xff0c 输入 term 可以弹出终端 Terminal 程序 方法2 xff1a 桌面或者在文件浏览器的任何目录下右键鼠标

随机推荐

  • 堆中存什么?栈中存什么?

    堆中存的是对象 栈中存的是基本数据类型 和堆中对象的引用 一个对象的大小是不可估计的 xff0c 或者说是可以动态变化的 xff0c 但是在栈中 xff0c 一个对象只对应了一个4btye的引用 xff08 堆栈分离的好处 xff1a xf
  • 计算一个数的N次方

    计算一个数的N次方时 xff0c 我们先设定两个参数n和k xff0c n表示你要输入的数 xff0c k表示这个数的次方 这个时候我们必须对次方数k作出分类 xff1a k 61 0 return 1 其他 xff1a return n
  • 用结构体编写电话通讯录

    用结构体数组编写电话通讯录 xff0c 必须得知道结构体的形式 xff0c 那先把结构体定义回顾一下 xff1a 一般形式为 xff1a xff08 1 xff09 struct 结构体名称 成员表列 数组名 数组长度 如 xff1a st
  • linux(centos)下安装git并上传代码些许步骤(亲自验证过的步骤)

    以前听说了好多次github xff0c 但直到最近才第一次学习使用github来托管自己在linux下的代码 xff01 说实话 xff0c 我自己在使用的时候从网上查了好多教程 xff0c 但总觉得难以掌握 xff08 步骤过于繁琐 x
  • shell具体执行过程及自主实现shell解释器

    在编写shell 解释器之前 xff0c 先来分析几个知识点 xff1a xff08 1 xff09 shell 执行命令时步骤 xff1a xff08 如下图 xff09 xff08 2 xff09 shell 执行脚本时的步骤 xff1
  • Linux下的桥接模式和Nat模式的区别

    先来看一下linux在的桥接模式和Nat模式的差别 xff1a 桥接模式 xff1a Nat模式 xff1a 真正的接触这个问题是因为同学要给我远程传输文件 xff0c 这个时候就调节至桥接模式下 xff0c 进行ping 尽管我们用的是同
  • C知识点整合

    C语言总结 一 语法 1 常见的数据内置类型所占字节 xff08 64 位下 xff09 xff1a char 1 int 4 float 4 long 4 double 8 Longlong 8 2 变量 xff1a xff08 1 xf
  • 判断一棵二叉树是否为完全二叉树

    1 完全二叉树的特点 xff08 来自专业定义 xff09 看到上面完全二叉树的特点 xff0c 我可以将其特点按照自己的 理解归纳为以下几点 xff1a xff08 1 xff1a 若二叉树最下面一层有节点出现 xff0c 那么这个节点一
  • 深入理解JNI技术

    一 JNI是什么 xff1f JNI是Java Native Interface的缩写 xff0c 译为Java本地调用 JNI是一种技术 二 JNI技术的用途 xff1f Java程序中的函数调用Native程序中的函数 Native一般
  • HTTP基本认证(Basic Authentication)

    在浏览网页时候 xff0c 浏览器会弹出一个登录验证的对话框 xff0c 如下图 xff0c 这就是使用HTTP基本认证 1 客户端发送http request 给服务器 服务器验证该用户是否已经登录验证过了 xff0c 如果没有的话 xf
  • 将字符串以单词为单位逆序"I am a Student" 解法

    网上有个题目 xff0c 将字符串以单词为单位逆序 例如 34 I am a Student 34 要变成 34 Student a am I 34 解法大致为 xff1a 先将字符串整体逆序第一个字符和最后一个交换 xff0c 第二个与倒
  • 堆排序查找前N个最大数和二分查找算法

    先了解堆排序概念 堆排序利用了大根堆 xff08 或小根堆 xff09 堆顶记录的关键字最大 xff08 或最小 xff09 这一特征 xff0c 使得在当前无序区中选取最大 xff08 或最小 xff09 关键字的记录变得简单 xff08
  • 构建hash表和两种处理冲突方法

    hash表定义 hashing定义了一种将字符组成的字符串转换为固定长度 xff08 一般是更短长度 xff09 的数值或索引值的方法 xff0c 称为散列法 xff0c 也叫哈希法 由于通过更短的哈希值比用原始值进行数据库搜索更快 xff
  • 用hash_map统计出现次数最多的前N个URL

    海量数据统计频率最高词汇的常规办法之一是先通过一个hash函数处理数据然后取模N xff0c 拆分为N个小文件 xff0c 对每一个小文件进行词频统计和排序处理 xff0c 然后归并N个小文件取频率最大的M个数 下面程序是利用hash ma
  • C++与java语法的异同整理

    文章目录 Java与C 43 43 与基础语法异同java的认知 amp java与C 43 43 的异同C 43 43 中的虚函数和JAVA中的抽象方法区别C 43 43 虚函数与JAVA中抽象函数比较关于接口与抽象类 xff1a Jav
  • 微信公众平台-股票行情查询

    微信公众平台 股票行情查询 php实现的获取上证 xff0c 深证 A B股实时行情的接口 xff0c 只实现了文本消息回复 xff0c K线图可以在图文消息中加上接口url地址就可以显示 xff0c 具体的接口地址网上可以找 xff0c
  • PELCO-D与PELCO-P协议介绍

    一般控制协议都由硬件或软件商编制在程序里面 xff0c 我们只需要通过相关的控制设备来进行操作 但是作为一个从事监控行业的技术人员 xff0c 往往会遇到除了电脑和协议转换器以外根本没有任何控制设备的情况 xff0c 此时 xff0c 协议
  • ROS 问题(topic types do not match、topic datatype/md5sum not match、msg xxx have changed. rerun cmake)

    1 topic types 不匹配 使用 roslaunch 命令 roslaunch carla ros bridge carla ros bridge with example ego vehicle launch 启动官方 demo
  • Ubuntu中查看安装的Python版本以及不同版本之间切换

    查看系统中已安装的所有Python版本 使用 ls 命令来查看你的系统中都有那些 Python 的二进制文件可供使用 xiyou 64 span class token property xiyou virtual machine span
  • Ubuntu Python 多版本安装

    概述 由于 Python 3 有几次较为跳跃的更新 xff0c 导致大量使用 Python 3 作为开发工具的软件会对 Python 3 的版本进行严格限制 xff0c 如限制使用 Python 3 8 Python 3 9 版本 这要求开