- 下载python包: https://www.python.org/downloads/
- 安装关联软件包: apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev
- 执行
sudo ./configure --enable-optimizations
此命令是为了在编译 Python 时启用性能优化,以获得更好的运行性能。不过,启用编译优化会增加编译时间,因此在编译大型的 Python 项目时需要权衡时间和性能的考虑
–enable-optimizations:这个选项告诉配置脚本启用编译优化。启用优化可以提高 Python 解释器的性能,但可能会导致编译过程更加耗时。 - 编译安装: make altinstall
altinstall:这是 make 命令的一个目标,与普通的 make install 目标不同。make install 通常用于将 Python 安装为系统的默认 Python 版本,而 altinstall 用于将 Python 安装为一个另外的、可选的 Python 版本。
通常情况下,make install 会覆盖系统默认的 Python 版本,这可能会导致系统中的其他应用程序受到影响。为了避免这种情况,altinstall 允许你将 Python 安装为一个独立的版本,通常会带有版本号,例如 python3.x,其中 x 是 Python 的次版本号。
使用 sudo make altinstall 会将编译好的 Python 安装到系统中,但不会覆盖系统默认的 Python 版本,而是创建一个可选的 Python 版本,你可以在需要的时候显式使用这个版本。
错误:
遇到了:
ModuleNotFoundError: No module named '_sqlite3'
ModuleNotFoundError: No module named 'pysqlite2'
原因:
当使用 源码安装 Python(如 3.10)时,如果系统中 缺少 SQLite 开发库,Python 编译时就不会构建 sqlite3 模块。
解决办法:
- 安装系统依赖(关键)
sudo apt update
sudo apt install libsqlite3-dev
- 重新编译 Python(如果你是从源码安装的)
假设你是从源码安装 Python 的(如解压 Python-3.10.x.tar.xz 并手动编译),那你必须重新编译一次 Python 才能生效:
cd ~/Python-3.10.XX # 替换为你的源码目录
make clean
./configure --enable-optimizations
make -j$(nproc)
sudo make altinstall # 不覆盖系统默认 python
重新编译后,sqlite3 模块就能正常使用了。
- 确认是否修复
可以运行查看,不报错就说明修复了:
>>> import sqlite3
>>> sqlite3.sqlite_version```