Ubuntu 系统从源码编译部署 Python 全流程(附shell脚本一键部署↓)
·
Python 是一门功能强大且应用广泛的编程语言,其知识点涵盖基础语法、进阶特性、标准库与第三方库以及应用领域等多个方面。以下是详细的知识点总结:
基础语法
-
变量与数据类型:
- 变量无需声明类型,直接赋值即可创建。
- 基本数据类型包括整数、浮点数、字符串、布尔值、列表、元组、字典和集合。
- 列表是可变的序列,元组是不可变的序列,字典是键值对的集合,集合是无序且元素唯一的容器。
-
运算符与表达式:
- 算术运算符:
+-*/等。 - 比较运算符:
==!=><等。 - 逻辑运算符:
andornot。 - 位运算符:
&|^~<<>>。 - 赋值运算符:
=+=-=等。
- 算术运算符:
-
控制流语句:
- 条件语句:
if、elif、else。 - 循环语句:
for循环(遍历序列)、while循环(条件循环)。 - 循环控制语句:
break(跳出循环)、continue(跳过当前循环的剩余部分)。
- 条件语句:
-
函数:
- 使用
def关键字定义函数。 - 参数传递方式包括位置参数、默认参数、关键字参数、可变位置参数(
*args)和可变关键字参数(**kwargs)。 - 支持匿名函数(
lambda表达式)。
- 使用
进阶特性
-
面向对象编程:
- 类与对象:使用
class关键字定义类,通过类名加括号创建对象。 - 继承:子类可以继承父类的属性和方法,使用
super()调用父类方法。 - 多态:同一操作作用于不同的对象,可以有不同的解释和执行结果。
- 封装:通过设置私有属性和方法来控制访问权限。
- 类与对象:使用
-
异常处理:
- 使用
try...except...finally语句块捕获和处理异常。 - 可以自定义异常类,继承自
Exception类。
- 使用
-
迭代器与生成器:
- 迭代器:遵循迭代器协议的对象,可以使用
next()函数获取下一个值。 - 生成器:使用
yield关键字定义的函数,返回迭代器,可以动态地产生一系列数据,避免内存占用。
- 迭代器:遵循迭代器协议的对象,可以使用
-
装饰器:
- 装饰器是一个函数,用于修改其他函数或类的行为。
- 通过在函数或类定义前加上
@装饰器名来使用。
-
上下文管理器:
- 使用
with语句简化资源的管理,如文件、网络连接等。 - 自定义上下文管理器需要实现
__enter__()和__exit__()方法。
- 使用
-
并发编程:
- 多线程:使用
threading模块创建线程,实现并发执行。 - 多进程:使用
multiprocessing模块创建进程,充分利用多核 CPU。 - 异步编程:使用
asyncio模块实现异步 I/O 和事件循环,处理并发任务。
- 多线程:使用
标准库与第三方库
-
标准库:
os:提供操作系统相关的功能,如文件/目录操作、环境变量管理等。sys:提供 Python 解释器相关的功能,如命令行参数、模块搜索路径等。re:提供正则表达式相关的功能,用于字符串匹配和替换。datetime:处理日期和时间。json:处理 JSON 数据。collections:提供额外的数据结构,如Counter、namedtuple、OrderedDict、defaultdict和deque。itertools:提供组合计算函数,如product、permutation、combinations等。
-
第三方库:
- Web 开发:
Flask(轻量级 Web 框架)、Django(功能强大的 Web 框架)、FastAPI(现代、快速的 Web 框架)。 - 数据分析:
Pandas(提供高性能、易用的数据结构和数据分析工具)、NumPy(科学计算基础库,支持大规模数值计算)。 - 数据可视化:
Matplotlib(2D 绘图库)、Seaborn(基于 Matplotlib 的高级可视化库)、Plotly(交互式图表库)。 - 机器学习:
Scikit-learn(机器学习库,提供分类、回归、聚类、降维等算法)、TensorFlow和PyTorch(深度学习框架)。 - 网络爬虫:
Requests(HTTP 库,简化 HTTP 请求的发送和响应的处理)、BeautifulSoup(HTML 和 XML 解析库)、Scrapy(强大的爬虫框架)。 - 数据库操作:
SQLite3(轻量级数据库)、SQLAlchemy(ORM 库,支持多种数据库)、Pymongo(MongoDB 的 Python 驱动程序)。
- Web 开发:
应用领域
- Web 开发:使用
Flask、Django等框架进行 Web 应用开发,处理 HTTP 请求、路由、模板渲染等。 - 数据分析与科学计算:使用
Pandas、NumPy等库进行数据处理和分析,使用Matplotlib、Seaborn等库进行数据可视化。 - 机器学习与深度学习:使用
Scikit-learn、TensorFlow、PyTorch等库进行模型训练和预测。 - 网络爬虫:使用
Requests、BeautifulSoup、Scrapy等库爬取网页数据,进行信息提取和分析。 - 自动化运维:使用 Python 编写脚本,实现自动化部署、监控和故障排除。
一、安装Python
更新软件包列表 & 安装编译依赖
sudo apt update
sudo apt install -y \
build-essential \
libncurses5-dev \
libreadline-dev \
libsqlite3-dev \
libgdbm-dev \
libnss3-dev \
zlib1g-dev \
libssl-dev \
libffi-dev \
libbz2-dev \
make \
wget
二、下载并编译 Python 源码
1. 下载 Python 源码包
前往 Python 官方下载页 获取最新稳定版(本文以 Python 3.11.10 为例):
wget https://www.python.org/ftp/python/3.11.10/Python-3.11.10.tgz
tar -xvf Python-3.11.10.tgz
cd Python-3.11.10
2. 配置编译选项
./configure \
--prefix=/usr/local/python-3.11.10 \
--enable-optimizations \
--with-ensurepip=install
参数说明:
--enable-optimizations:启用性能优化(PGO),提升运行速度,但编译时间更长--with-ensurepip=install:安装时自动安装pip--enable-shared:生成共享库(.so),避免后续libpython3.13.so.1.0找不到的问题
3. 编译并安装
make -j$(nproc)
sudo make altinstall
⚠️ 重要:使用 altinstall 而不是 install
make install会覆盖系统默认的python3,可能导致系统工具(如 apt)异常make altinstall安装为python3.13,保留系统python3不变
4. 创建软链接(便于管理与升级)
sudo ln -s /usr/local/python-3.11.10/ /usr/local/python
5. 配置环境变量
echo 'export PATH="/usr/local/python/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
三、验证安装结果
python3.11 --version
pip3.11 --version

四、配置 pip 国内镜像源
方法一:临时使用(单次命令)
pip3.11 install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
方法二:永久配置(推荐)
1. 创建 pip 配置目录
mkdir -p ~/.pip
2. 编辑配置文件
vim ~/.pip/pip.conf
3. 写入以下配置
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
extra-index-url =
https://mirrors.aliyun.com/pypi/simple/
https://pypi.doubanio.com/simple/
https://pypi.mirrors.ustc.edu.cn/simple/
[install]
trusted-host =
pypi.tuna.tsinghua.edu.cn
mirrors.aliyun.com
pypi.doubanio.com
pypi.mirrors.ustc.edu.cn
配置说明:
index-url:主镜像源(清华,速度快)extra-index-url:备用源,主源失败时自动切换trusted-host:避免 HTTPS 证书验证错误
4. 验证配置是否生效
pip3.11 config list

五、Shell 脚本自动化安装
#!/bin/bash
# Ubuntu 源码安装 Python 3.11.10 一键脚本
# 作者:LoneEon
set -e # 遇错误立即退出
# =============== 可配置参数 ===============
PYTHON_VERSION="3.11.10" # 要安装的 Python 版本
PYTHON_MAJOR_MINOR="3.11" # 主版本号(用于可执行文件名)
PREFIX="/usr/local/python-${PYTHON_VERSION}"
TEMP_DIR="/tmp/python_build"
PIP_CONF_DIR="$HOME/.pip"
PIP_CONF_FILE="$PIP_CONF_DIR/pip.conf"
# ==========================================
echo "🚀 开始安装 Python ${PYTHON_VERSION} ..."
# 1. 创建临时目录
mkdir -p $TEMP_DIR
cd $TEMP_DIR
# 2. 更新系统并安装编译依赖
echo "📦 正在安装编译依赖..."
sudo apt update
sudo apt install -y \
build-essential \
libncurses5-dev \
libreadline-dev \
libsqlite3-dev \
libgdbm-dev \
libnss3-dev \
zlib1g-dev \
libssl-dev \
libffi-dev \
libbz2-dev \
liblzma-dev \
wget \
make
# 3. 下载 Python 源码
echo "⬇️ 正在下载 Python ${PYTHON_VERSION} 源码..."
wget -O Python-${PYTHON_VERSION}.tgz https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz
# 4. 解压源码
echo "📦 正在解压..."
tar -xzf Python-${PYTHON_VERSION}.tgz
cd Python-${PYTHON_VERSION}
# 5. 配置编译选项
echo "⚙️ 正在配置编译参数..."
./configure \
--prefix=${PREFIX} \
--enable-optimizations \
--enable-shared \
--with-ensurepip=install
# 6. 编译(使用所有 CPU 核心)
echo "🔥 正在编译 Python ${PYTHON_VERSION}(可能需要 5-15 分钟)..."
make -j$(nproc)
# 7. 安装(使用 altinstall 避免覆盖系统 python3)
echo "✅ 正在安装..."
sudo make altinstall
# 8. 创建软链接目录并链接
echo "🔗 创建软链接..."
sudo mkdir -p /usr/local/python
sudo ln -sf ${PREFIX} /usr/local/python/${PYTHON_VERSION}
sudo ln -sf ${PREFIX}/bin/python${PYTHON_MAJOR_MINOR} /usr/local/bin/python${PYTHON_MAJOR_MINOR}
sudo ln -sf ${PREFIX}/bin/pip${PYTHON_MAJOR_MINOR} /usr/local/bin/pip${PYTHON_MAJOR_MINOR}
# 9. 解决 libpython 动态链接库问题
echo "🔧 配置动态库路径..."
echo "${PREFIX}/lib" | sudo tee /etc/ld.so.conf.d/python-${PYTHON_VERSION}.conf
sudo ldconfig
# 10. 添加环境变量到 ~/.bashrc(如果尚未添加)
if ! grep -q "export PATH=\"/usr/local/python/bin:\$PATH\"" "$HOME/.bashrc"; then
echo 'export PATH="/usr/local/python/bin:$PATH"' >> "$HOME/.bashrc"
echo "📌 已添加 PATH 到 ~/.bashrc,请重新登录或执行 source ~/.bashrc"
fi
# 11. 创建并配置 pip 国内镜像源
echo "🌐 配置 pip 国内镜像源(清华 + 阿里 + 豆瓣 + 中科大)..."
mkdir -p $PIP_CONF_DIR
cat > $PIP_CONF_FILE << 'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
extra-index-url =
https://mirrors.aliyun.com/pypi/simple/
https://pypi.doubanio.com/simple/
https://pypi.mirrors.ustc.edu.cn/simple/
[install]
trusted-host =
pypi.tuna.tsinghua.edu.cn
mirrors.aliyun.com
pypi.doubanio.com
pypi.mirrors.ustc.edu.cn
EOF
# 12. 验证安装
echo "🔍 验证安装结果..."
python${PYTHON_MAJOR_MINOR} --version
pip${PYTHON_MAJOR_MINOR} --version
# 13. 清理临时文件
echo "🧹 清理临时文件..."
cd /
rm -rf $TEMP_DIR
echo "🎉 Python ${PYTHON_VERSION} 安装完成!"
echo "💡 使用方式:"
echo " - Python: python${PYTHON_MAJOR_MINOR}"
echo " - Pip: pip${PYTHON_MAJOR_MINOR}"
echo " - 镜像源已配置,安装包速度飞快!"
echo "📌 请重新登录终端或运行:source ~/.bashrc"
常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
ModuleNotFoundError: No module named '_ssl' | 缺少 OpenSSL 开发包 | 安装 libssl-dev 并重新编译 |
pip command not found | 未启用 ensurepip | 重新编译时加 --with-ensurepip=install |
Could not fetch URL | 镜像源不可信 | 检查 trusted-host 配置 |
| 安装包速度仍慢 | DNS 问题 | 可尝试更换 DNS 为 114.114.114.114 或 8.8.8.8 |
本文详细介绍如何在 Ubuntu 系统上从源码编译安装 Python 3.11,并配置 pip 使用国内镜像源以大幅提升包下载速度,内容涵盖环境准备、源码编译、安装步骤及基于徐步前行 Blog 的推荐方案进行永久镜像源配置,帮助开发者搭建高效、稳定的 Python 开发环境。
更多推荐
所有评论(0)