ubuntu下安装python环境

高版本的ubuntu 系统已经默认自带python环境了,但是如果你想安装指定版本的python包的话,你就只能通过编译的方式安装python,步骤很简单,最主要的还是依赖问题的解决。

安装依赖

# 刷新软件包目录
sudo apt update
# 列出当前可用的更新
sudo apt list --upgradable
# 如上一步提示有可以更新的项目,则执行更新
sudo apt upgrade

# 安装 GCC 编译器
sudo apt install gcc

# 检查安装是否成功
gcc -v
# 若显示出 GCC 版本则成功

安装其他依赖

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev sqlite3 libsqlite3-dev tk-dev uuid-dev libgdbm-compat-dev

注意,Python 的部分功能依赖于对应的库(如 OpenSSL、SQLite3、LZMA 等),如果在编译时未能找到这些库,仍然可能完成编译。此时的 Python 解释器看似可以工作,但在需要使用特定功能时就会出问题。例如 OpenSSL 出现问题会导致无法正常使用 pip。故建议按本节提示安装所有可选依赖项,并在下一节编译时仔细检查有无报错信息。

编译

下载python源码

也可以直接通过 wget进行下载,下载链接在网页中右键复制链接地址即可

sudo wget https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tar.xz

解压并进入该目录,后续的所有命令均在该目录中执行:

# 解压
tar -xf Python-3.9.12.tar.xz
# 进入该目录
cd Python-3.9.12/

配置编译选项

检查依赖与配置编译
sudo ./configure --enable-optimizations --with-lto --enable-shared

此处使用了三个可选配置项,含义如下:

  • --enable-optimizations:用 [PROFILE_TASK](https://docs.python.org/zh- cn/3/using/configure.html#envvar-PROFILE_TASK) 启用以配置文件主导的优化(PGO)
  • --with-lto:在编译过程中启用链接时间优化(LTO)
  • --enable-shared:启用共享 Python 库 libpython 的编译

更多可用配置项的信息,请参阅 [Python 官方文档](https://docs.python.org/zh- cn/3/using/configure.html)

经过一系列检查无误之后,会自动生成 Makefile,即可进行下一步的编译了。

编译

完成配置,生成 Makefile 后,就可以开始编译了。 编译耗时较长 ,可以使用 -j 选项指定参与编译的 CPU 核心数,例如此机器为 6 核 CPU:

# 编译,-j 后面的数字为参与编译的CPU核心数,根据个人机器配置调整
sudo make -j 6

编译结束后,注意仔细查看一下输出,检查可能存在的错误

安装

# 安装二进制文件
sudo make altinstall

!!!不要使用标准的make install因为它会覆盖默认的系统 python 3 二进制包。

链接动态库

由于编译配置中有 --enable-shared 的选项,故此时直接使用命令 python3.9 会提示无法找到 libpython3.9.so.1.0 的错误。只需找到该 so 文件,复制(或创建符号链接)到 /usr/lib/ 目录下即可:

# 找到 libpython 的位置
$ whereis libpython3.9.so.1.0
libpython3.9.so.1: /usr/local/lib/libpython3.9.so.1.0
# 在 /usr/lib/ 下创建 libpython 的符号链接
$ sudo ln -s /usr/local/lib/libpython3.9.so.1.0 /usr/lib/

使用 Python 3.9

完成安装后,Python 3.9 会与系统原有的 Python 共存。由于 Ubuntu 系统、安装的其他软件等很可能会依赖于系统原有的python版本,所以不要移除原有 Python 环境,也不要对 python3 等命令进行修改。

命令行使用

直接在命令行使用 python3.9 命令即可调用新安装的解释器:

# 在命令行使用 Python 交互式解释器
$ python3.9
Python 3.9.12 (main, Apr 22 2022, 18:58:57) 
[GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

# 查看该命令所在位置
$ which python3.9
/usr/local/bin/python3.9

类似的,使用 Python 3.9 的 pip 的命令为 pip3.9

# 查看 pip3.9 版本
$ pip3.9 -V
pip 22.0.4 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

0 评论

发表评论

精品资源◆乐于分享


Title