【Python】ubuntu python>3.9编译安装,及多个Python版本并存的使用方法

news2024/11/28 16:03:13

【Python】ubuntu python3.9编译安装,及多个Python版本并存的使用方法

      • 1. 安装依赖
      • 2. 编译与安装
        • 2.1 依赖与源获取
        • 2.2 配置
        • 2.3 编译
        • 2.4 安装
        • 2.5 建立软连接 链接动态库
      • 3. 多版本兼容

1. 安装依赖

更新系统软件
在正式开始之前,建议首先检查系统软件是否均为最新,并更新到最新版本。

打开一个终端,输入以下命令:

# 刷新软件包目录
sudo apt update
# 列出当前可用的更新
sudo apt list --upgradable
# 如上一步提示有可以更新的项目,则执行更新
sudo apt upgrade

安装 GCC 编译器
打开一个终端,使用 apt 安装 GCC 编译器:

安装 GCC 编译器
打开一个终端,使用 apt 安装 GCC 编译器:

可能需要的其他依赖:

# 刷新软件包目录
sudo apt update
# 安装依赖
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev sqlite3 libsqlite3-dev tk-dev uuid-dev libgdbm-compat-dev

注意,Python 的部分功能依赖于对应的库(如 OpenSSL、SQLite3、LZMA 等),如果在编译时未能找到这些库,仍然可能完成编译。此时的 Python 解释器看似可以工作,但在需要使用特定功能时就会出问题。例如 OpenSSL 出现问题会导致无法正常使用 pip。故建议按本节提示安装所有可选依赖项,并在下一节编译时仔细检查有无报错信息。

2. 编译与安装

2.1 依赖与源获取

下载源代码地址
最好直接安装3.9以上,都是教训

下载 Python 3.10.12
sudo wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tar.xz
下载其他版本只需替换版本号数字

解压并进入该目录,后续的所有命令均在该目录中执行:

# 解压
tar -xf Python-3.10.12.tar.xz
# 进入该目录
cd Python-3.10.12/
2.2 配置
# 检查依赖与配置编译
sudo ./configure --enable-optimizations --with-lto --enable-shared

此处使用了三个可选配置项,含义如下:

–enable-optimizations:用 PROFILE_TASK 启用以配置文件主导的优化(PGO)
–with-lto:在编译过程中启用链接时间优化(LTO)
–enable-shared:启用共享 Python 库 libpython 的编译
更多可用配置项的信息,请参阅 Python 官方文档。

在这里插入图片描述

2.3 编译
# 编译,-j 后面的数字为参与编译的CPU核心数,根据个人机器配置调整
sudo make -j 6

编译结束后,注意仔细查看一下输出,检查可能存在的错误:

# 一种可能出现的问题:
$ sudo make
# ......省略部分输出......
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_dbm                  _tkinter              _uuid              
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
2.4 安装
# 安装二进制文件
sudo make altinstall

在这里插入图片描述
在这里插入图片描述

2.5 建立软连接 链接动态库

如果使用 sudo make install 直接安装就不需要,使用 # 安装二进制文件
sudo make altinstall 是需要的

● 原因:刚完成python3.10版本的安装后,默认路径在 /usr/local/bin 。并不方便查找
在这里插入图片描述
● 目的:建立python3.10专门的软连接,指定 python 指令找到刚安装的 python3.10。

  1. 删除原来的软连接
sudo rm -f /usr/bin/python3

删除后变成这样
在这里插入图片描述

  1. 在/usr/bin/目录创建软连接python,定向/usr/local/bin/python3.10

//因为是在bin底下生成的一个文件,所以需要用到超级用户权限sudo

sudo ln -s /usr/local/bin/python3.10 /usr/bin/python3

在这里插入图片描述

3. 多版本兼容

[见blog python2与python3转换记录]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1348862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023下半年的总结

我从八月下旬开始写的,到现在差不多有半年了,总结一下吧! 1.计算机视觉 在计算机视觉方面,想必两个有名的深度学习框架(TensorFlow和PyTorch)大家都很清楚吧,以及OpenCV库。对于人脸识别&…

FPGA项目(14)——基于FPGA的数字秒表设计

1.功能设计 设计内容及要求: 1.秒表最大计时范围为99分59. 99秒 2.6位数码管显示,分辨率为0.01秒 3.具有清零、启动计时、暂停及继续计时等功能 4.控制操作按键不超过二个。 2.设计思路 所采用的时钟为50M,先对时钟进行分频,得到100HZ频率…

【ROS2】MOMO的鱼香ROS2(三)ROS2入门篇——ROS2第一个节点

ROS2第一个节点 引言1 认识ROS2节点1.1 节点之间的交互1.2 节点的命令行指令1.3 工作空间1.4 功能包1.4.1 功能包获取安装1.4.2 功能包相关的指令 ros2 pkg 2 ROS2构建工具—Colcon2.1 安装Colcon2.2 测试编译2.3 Colcon其他指令 3 使用RCLPY编写节点3.1 创建Python功能包3.2 编…

2024新版塔罗占卜网站源码风水起名附带搭建视频及文本教程

附带文本教学及视频教程安装方法以linux为例: 1、建议在服务器上面安装宝塔面板,以便操作,高逼格技术员可以忽略这步操作。 2、把安装包文件解压到根目录,同时建立数据库,把数据文件导入数据库 3、修改核心文件conf…

力扣-206. 反转链表

文章目录 力扣题目代码 力扣题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出&#x…

【形式语言与自动机/编译原理】CFG-->Greibach-->NPDA(2)

本文将详细讲解《形式语言与自动机》(研究生课程)或《编译原理》(本科生课程)中的上下文无关文法(CFG)转换成Greibach范式,再转成下推自动机(NPDA)识别语言是否可以被接受…

【大数据Hive】hive 运算符使用详解

目录 一、前言 二、hive 运算符分类 三、hive 运算符操作演示 3.1 数据准备 创建表dual 加载一个文件dual.txt到dual表中 模拟测试 3.2 关系运算符 is null空值判断 is not null 非空值判断 like使用 3.3 算术运算符 取整操作 取余操作: % 位与操作: & …

Airtest的iOS实用接口介绍

前段时间Airtest更新了1.3.0.1版本,里面涉及非常多的iOS功能新增和改动,今天想详细跟大家聊一下里面的iOS设备接口。 PS:本文示例均使用本地连接的iOS设备,Airtest版本为1.3.0.1 。 安装接口:install、install_app …

互联网大厂面试题目

阿里篇 1.1.1 如何实现一个高效的单向链表逆序输出? 1.1.2 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位 1.1.3 给定一个二叉搜索树(BST),找到树中第 K 小的节点 1.1.4 LRU缓存机制 1.1.5 关于epoll和…

UG装配-接触对齐

UG装配约束命令在如下位置 首选接触:含接触和对齐,自动判断两种类型 接触:约束对象使其曲面法向在相反方向,并共面或共线 对齐:约束对象使其曲面法向在同一方向,并共面或共线 自动判断中心/轴&#xff1…

innovus:refresh CTS

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 调试CTS spec过程中,如果对CTS结果不满意,需要重新做CTS,有没有办法不退出工具,不用重新启动placemen database重新做CTS吗&…

爬取豆瓣电影评论内容、星级、评论时间、支持人数

大家好,我是带我去滑雪,每天教你一个小技巧! 本期爬取豆瓣电影评论人、评论时间、星级、支持人数、评论内容。话不多说,直接上代码: import requests from bs4 import BeautifulSoup import pandas as pd import time…

Node.js+Express+Mysql 极简代码实现对数据库增删改查的Restful API服务

确保已安装node 创建项目文件夹,并初始化 npm init -y 安装express ​npm install express 安装mysql npm install mysql 安装body-parser npm install body-parser 新建db/mysql.js const mysql require(mysql);let db mysql.createConnection({host: …

如何解决企业内部FTP文件传输速度过慢和安全问题

在数据化时代里,企业内部的文件传输永远是刚需,而因为 FTP协议的简单、易用、广泛支持等优点,让很多企业早期都普遍使用,随着数量量的增多,和对安全的要求越来越高,FTP也暴露出了一些列问题,小编…

软件测试/测试开发丨Linux 三剑客与管道使用

1、 程序运行环境输入与输出 标准输入 0 read a;echo $a标准输出 1 echo ceshiren.com错误输出 ls not_exist_dir 2、 管道重定向 管道与管道之间可以重定向管道与文件之间可以重定向 echo 11 > /tmp/1 read var </tmp/1错误输出&#xff1a; ls not_exist_dir > /…

【华为机试】2023年真题B卷(python)-喊七的次数重排

一、题目 题目描述&#xff1a; 喊7是一个传统的聚会游戏&#xff0c;N个人围成一圈&#xff0c;按顺时针从1到N编号。 编号为1的人从1开始喊数&#xff0c;下一个人喊的数字为上一个人的数字加1&#xff0c;但是当将要喊出来的数字是7的倍数或者数字本身含有7的话&#xff0c;…

第一节 初始化项目

系列文章目录 第一节 初始化项目 文章目录 操作步骤 总结 操作步骤 打开cmd 输入 vue ui 在打开的网页中点击“创建”&#xff0c;复制文件夹路径并粘贴点击“在此创建新项目” 输入项目名称 点击下一步选择手动配置 选择babel、router、vuex、css pre-processors、 linter建…

Pearson correlation coefficient (Pearson’s r) 皮尔森相关系数

此图用的是箱状图&#xff0c;的纵轴是“Pearson’s r”&#xff0c;是实际观测值与机器学习模型预测值之间的相关性 Pearsons f得分&#xff0c;它是一个统计量&#xff0c;用来衡量两个变量之间线性相关性的强度。这个得分可能是用来衡量实际观测值与机器学习模型预测值之间的…

Pycharm 切换interpreter---python的环境和第三方库问题

这篇回答两个问题&#xff1a; 1.为什么在 pycharm中打开新的project&#xff0c;切换interpreter 之后发现自己之前装的库消失了&#xff1f; 2.为什么 interpreter 切换到python3.8了&#xff0c; terminal 还是在 3.9&#xff1f;&#xff1f; 问题的关键&#xff1a;搞懂什…

自定义富集分析结果的term顺序

大家好&#xff0c;元旦过得还好吗&#xff1f;之前我们聊过如果富集分析结果不理想&#xff0c;如何选择富集分析的terms&#xff0c;如果不记得&#xff0c;可以看看这三个推文和视频。 ​富集分析结果不理想&#xff1a;如何从上千个term中找到自己想要所有term&#xff1f;…