Ubuntu源码编译安装Python3.8 3.9
一、下载源码
1.1 国外官方站,下载:
3.8:https://www.python.org/ftp/python/3.8.17/Python-3.8.17.tgz
3.9:https://www.python.org/ftp/python/3.9.17/Python-3.9.17.tgz
1.2 国内镜像站,下载:
https://www.cnblogs.com/wutou/p/17709685.html
二、配置编译参数说明
1. 指定Python的安装目录:
--prefix:指定安装目录
例如:
./configure --prefix=/usr/local/python3817
这将把 Python 3.8 安装在 /usr/local/python3817 目录下。
2. 启用优化:
--enable-optimizations
例如:
./configure --prefix=/usr/local/python3817 --enable-optimizations
这将在编译Python时启用优化选项,提高Python的运行效率。
3. 启用共享库:
这将在编译Python时生成共享库,方便其他程序共享Python的库文件。
--enable-shared
例如:
./configure --prefix=/usr/local/python3817 --enable-optimizations --enable-shared
4. 指定OpenSSL库的路径
如果需要使用SSL加密功能。
这将在编译Python时链接指定的OpenSSL库,以支持SSL加密功能。
--with-openssl
例如:
./configure --prefix=/usr/local/python3817 --enable-optimizations --enable-shared --with-openssl=/usr
注意:--with-openssl 需要的是源码文件,openssl/ssl.h 头文件,不要指定 bin 目录,ubuntu1804下 /usr 这个建议不要修改[注]
5. 不显示 Warning 警告信息
--no-warn
6. 加载 libsqlite3-dev 依赖 [注1] [注2]
--enable-loadable-sqlite-extensions
三、编译
1.依赖安装
sudo apt-get install zlib1g-dev tcl-dev tk-dev libsqlite3-dev libbz2-dev libffi-dev
libbz2-dev、libffi-dev 是 pandas 用到
2.生成 Makefile 配置
./configure --prefix=/usr/local/python3817 --enable-optimizations --enable-shared --with-openssl=/usr
3.编译,执行 Makefile
make
4.安装
sudo make install
或
sudo make altinstall
使用标准的 make install,它将覆盖默认的系统 python3 二进制文件
四、创建软链接
1.备份原来 python3 链接
sudo mv /usr/bin/python3{,.bak} sudo mv /usr/bin/pip3{,.bak}
2.创建 bin 文件软连接,让 python3 命令可以在终端任何文件夹使用
创建 python3 命令软连接
sudo ln -s /usr/local/python3817/bin/python3.8 /usr/bin/python3
创建 pip 命令软连接:
sudo ln -s /usr/local/python3817/bin/pip3.8 /usr/bin/pip3
3.创建 so 库软链接
sudo ln -s /usr/local/python3817/lib/libpython3.8.so /usr/lib/libpython3.8.so.1.0 sudo ln -s /usr/local/python3817/lib/libpython3.8.so /usr/lib32/libpython3.8.so.1.0
五、修改 pip 源
更改pip源,不论pip还是pip3都是再用户目录下创建pip.conf文件:
mkdir ~/.pip vim ~/.pip/pip.conf
pip.conf写入:
[global] timeout = 6000 index-url = http://mirrors.aliyun.com/pypi/simple/ trusted-host = pypi.tuna.tsinghua.edu.cn
六、查看版本
python3 -V 或 python3 --version
七、卸载
如果发现这个软件并不是那么稳定好使,
想要卸载它就难了,如果当时安装编译的源代码文件还在的话可以进入源代码目录,
编译之后除了会生成install脚本之外还会生成一个uninstall 脚本,因此我们使用 [注]
sudo make uninstall
或
如果你知道且确定文件夹在哪个目录(--prefix=/usr/local/python3817 这个参数指定的目录),直接删文件夹和 ln 软链接就可以了 [注]
八、错误记录
1.错误: [注]
zipimport.ZipImportError: can't decompress data; zlib not available Makefile:1186: recipe for target 'install' failed make: *** [install] Error 1
解决方法:
sudo apt-get install zlib1g-dev
2.错误: [注]
python3: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
解决方法:按上面4.3创建软链接
3.错误:
python INFO: Can't locate Tcl/Tk libs and/or headers
解决方法:[注]
sudo apt-get install tcl-dev tk-dev
4.错误 [注]
Traceback (most recent call last): File "/usr/lib/command-not-found", line 27, in <module> from CommandNotFound.util import crash_guard ModuleNotFoundError: No module named 'CommandNotFound'
解决方法:https://www.cnblogs.com/wutou/p/17526402.html
5.错误
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
解决方法:
cd /usr/local/ sudo ln -s /usr/bin/openssl openssl
6.错误
ERROR: Can not execute setup.py
since setuptools is not available in the build environment
解决方法:
更新setuptools
py2: pip install --upgrade setuptools py3: pip3 install --upgrade setuptools
注意:提示没有权限,加 sudo
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev sudo apt-get install -y libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm sudo apt-get install -y libncurses5-dev libncursesw5-dev xz-utils tk-dev sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev
一次可能无法成功,可以三行换顺序执行一下【注】
--reinstall 重新安装 [注1] [注2]
参考:
https://blog.sacus.top/archives/1223 (编译参数)
https://blog.csdn.net/somken/article/details/128775179 (推荐 make altinstall )
https://blog.csdn.net/xujianjun229/article/details/118500154
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器