ubuntu20.04/22.04 系统环境下源码编译Python3.10
2022年10月3日更新
在Ubuntu22.04系统上源码编译python,所依赖环境的安装命令为:
sudo apt install gcc g++ libffi-dev build-essential checkinstall
sudo apt install libreadline-dev readline-common libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
如果编译后的python并没有放在系统路径下面而是放在了个人目录下,那么还需要配置.bashrc文件来为新编译的python环境指定执行路径和库路径,具体为在.bashrc文件中添加内容:
export PATH="/home/devil/python3.7/bin:$PATH"
export LD_LIBRARY_PATH="/home/devil/python3.7/lib:$LD_LIBRARY_PATH"
其中,/home/devil/python3.7为个人放置编译好python的路径。
========================================
由于需求要求需要使用源码编译Python3.10,快十个年头没有编译过Python源码了,这些年一直用conda来创建Python的环境,但是现在有个需要和Python联合编译的代码来搞,于是就开始弄了下Python3.10的源码编译。
本文操作系统环境为Ubuntu20.04, 系统为干净的新装机系统,因此本文的教程可以适配于大部分情况下的Ubuntu20.04系统。
具体操作如下:
git clone https://github.com/python/cpython cd cpython git checkout 3.10 sudo apt install gcc sudo apt install make sudo apt install openssl sudo apt install libssl-dev sudo apt install libffi-dev sudo apt install zlib1g-dev sudo apt install build-essential sudo apt install gcc g++ libffi-dev build-essential checkinstall sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev ./configure --with-pydebug --enable-shared --prefix=/home/devil/python3.10 && make -j8 make install
大致解释下上面的操作:
下载源码:
git clone https://github.com/python/cpython
在源码中切换到3.10版本下面:
git checkout 3.10
安装依赖组件:
sudo apt install gcc
sudo apt install make
sudo apt install openssl
sudo apt install libssl-dev
sudo apt install libffi-dev
sudo apt install zlib1g-dev
sudo apt install build-essential
sudo apt install gcc g++ libffi-dev build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
配置及编译:
./configure --with-pydebug --enable-shared --prefix=/home/devil/python3.10 && make -j8
需要注意的是,--prefix=/home/devil/python3.10是指编译好后安装到哪个位置,/home/devil/python3.10是我的电脑上的位置,这个路径可以根据个人需要来修改。
安装:
make install
===================================================
编译&安装后:

为了让新安装的Python方便使用我们可以修改 .bashrc 文件,将新安装的Python的路径加入到PATH变量中:
在 /home/devil/.bashrc 文件中添加内容:
export PATH=/home/devil/python3.10/bin:$PATH

同时在编译安装后的python3.10/bin路径下设置软链接:
ln -s python3.10 python
ln -s pip3 pip


可以看到这样修改后我们默认调用Python的时候就是我们所新编译的,而且这里不建议把编译后的Python安装到系统默认路径下,这样就不需要修改系统中shell的依赖关系,而且我们一般编译Python都是为特定环境开发使用的,这样需要什么版本的Python也可以方便更换。
===================================================
说明一下,如果编译前不执行下面语句:
sudo apt install gcc g++ libffi-dev build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
编译安装后的Python没有tab补全功能。
===================================================
ubuntu20.04/22.04 系统环境下源码编译Python3.10的更多相关文章
- CentOS 6.6 下源码编译安装MySQL 5.7.5
版权声明:转自:http://www.linuxidc.com/Linux/2015-08/121667.htm 说明:CentOS 6.6 下源码编译安装MySQL 5.7.5 1. 安装相关工具# ...
- CentOS7 下源码安装 python3
CentOS 7 下源码安装 python3 在CentOS7下,默认安装的是python2.7:为满足项目要求,安装python3 的方法如下: 1. 首先安装python3.6可能使用的依 ...
- Ubantu16.04进行Android 8.0源码编译
参考这篇博客 经过测试,8.0源码下载及编译之后,占用100多G的硬盘空间,尽量给ubantu系统多留一些硬盘空间,如果后续需要在编译好的源码上进行开发,需要预留更多的控件,为了防止后续出现文件权限问 ...
- 在Linux下源码编译安装GreatSQL/MySQL
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 本 ...
- Linux下源码编译安装rpy2
R(又称R语言)是一款开源的跨平台的数值统计和数值图形化展现工具.rpy2是Python直接调用R的第三方库,它可以实现使用python读取R的对象.调用R的方法以及Python与R数据结构转换等.这 ...
- Linux 下源码编译安装 vim 8.1
前言 目前 linux 的各个发行版基本上都是带了一个 vi 编辑器的,而本文要说的 vim 编辑器对 vi 做了一些优化升级,更好用.当我们需要远程操作一台 linux 服务器的时候,只能使用命令行 ...
- CentOS 6.3下源码编译安装LAMP
一.简介 什么是LAMP LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代 ...
- redhat6.3下源码编译方式安装最新版git
在linux下安装git,通过yum方式安装的不是最新版本. 要替换最新版需要以下操作. 1.安装依赖包 # yum install curl-devel expat-devel gettext-de ...
- elasticsearch5.5.3 源码学习 idea下源码编译
1.学习elasticsearch 源码,通过搜索“elasticsearch源码”,进行相关搜索. 2.因源码gradle编译,选择gradle-3.5可以编译通过,对应elasticsearc ...
- centos7下源码编译方式安装httpd
前言 Apache至少需要apr.apr-util.pcre组件的支持. APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主 ...
随机推荐
- work06
练习题:=============================================================第七题: 1.定义方法 isSXH(int num) 功能:判断数字n ...
- 什么是spring框架?
spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开源框架
- Centos7部署FytSoa项目至Docker——第二步:安装Mysql、Redis
FytSoa项目地址:https://gitee.com/feiyit/FytSoaCms 部署完成地址:http://82.156.127.60:8001/ 先到腾讯云申请一年的云服务器,我买的是一 ...
- Windows无法访问vsftpd
在搭建vsftpd的时候注意放行相应的服务,注意,是服务,不是端口!! 如果你简单的--add-port放行20和21端口,那么恭喜你,就是访问不了. 正确的方法是--add-service=ftp, ...
- Vue3 中的 v-bind 指令:你不知道的那些工作原理
前言 v-bind指令想必大家都不陌生,并且都知道他支持各种写法,比如<div v-bind:title="title">.<div :title="t ...
- TensorFLow手写字识别深度学习网络分析详解
Tensorflow和MNIST简介 TensorFlow 是一个采用数据流图,用于数值计算的开源软件库.它是一个不严格的"神经网络"库,可以利用它提供的模块搭建大多数类型的神经网 ...
- 视觉语言跨模态特征语义相似度计算改进--表征空间维度语义依赖感知聚合算法 ACM MM
论文链接:Unlocking the Power of Cross-Dimensional Semantic Dependency for Image-Text Matching (ACM MM23) ...
- LangGraph实战
1.概述 前段时间LangChain发布了LangGraph,它引起了很多关注.LangGraph 的主要优势在于它能够实现循环工作流,这对于在 LLM 应用程序中模拟类似代理的行为至关重要.本篇博客 ...
- 新品再袭,比RK3568J降本40%+,瑞芯微最新性价比工业平台-RK3562J
- windows下使用dockerdesktop进行部署
Docker部署springboot项目 环境准备 要在windows上使用docker需要确认系统的需求 需要启用虚拟化支持的CPU 启用适用于windows的Linux子系统功能 保证足够的内存 ...