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

image


七、卸载

如果发现这个软件并不是那么稳定好使,
想要卸载它就难了,如果当时安装编译的源代码文件还在的话可以进入源代码目录,
编译之后除了会生成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


7.还有问题不能安装,试试下面其他依赖 [注1] [注2]

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


posted @ 2023-07-04 12:25  悟透  阅读(1279)  评论(0编辑  收藏  举报