如何在Debian 10上安装Python3.8?

15

昨天我在我的电脑上安装了Debian 10.0.4操作系统。

它默认安装的是Python 3.7.3版本,我试图将其更新到3.8.3版本。现在我已经成功安装了3.8.3版本,但当我尝试使用官方提供的get-pip.py安装pip时,程序抛出了一个异常。异常信息如下:

Traceback (most recent call last):
  File "<frozen zipimport>", line 520, in _get_decompress_func
ModuleNotFoundError: No module named 'zlib'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen zipimport>", line 520, in _get_decompress_func
ModuleNotFoundError: No module named 'zlib'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<frozen zipimport>", line 568, in _get_data
  File "<frozen zipimport>", line 523, in _get_decompress_func
zipimport.ZipImportError: can't decompress data; zlib not available

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "get-pip.py", line 23484, in <module>
    main()
  File "get-pip.py", line 198, in main
    bootstrap(tmpdir=tmpdir)
  File "get-pip.py", line 82, in bootstrap
    from pip._internal.cli.main import main as pip_entry_point
  File "<frozen zipimport>", line 241, in load_module
  File "<frozen zipimport>", line 709, in _get_module_code
  File "<frozen zipimport>", line 570, in _get_data
zipimport.ZipImportError: can't decompress data; zlib not available

我必须提到的是,Python(Python2.7)和Python 2.7的pip正在工作,而且我尝试使用源代码编译重新安装Python,但在安装时出现了另一个错误(zlib错误)。


你是如何更新Python的?无论如何,非常重要的一点是:永远不要将自定义程序(和版本)与系统程序混合使用。 - Giacomo Catenazzi
请注意以下是我对第一步的回答。 - alex_noname
1个回答

34

在Debian 10上安装Python 3.8

在Debian上构建Python 3.8是一个相对简单的过程,只需要几分钟时间。

  1. 首先安装构建Python源代码所需的软件包:
sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev liblzma-dev
  1. 从Python下载页面使用wget或curl下载最新版本的源代码。撰写本文时,最新版本为3.8.2:
curl -O https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz
  • 下载完成后,解压缩tarball:
  • tar -xf Python-3.8.2.tar.xz
    
    1. 导航到Python源代码目录并运行 configure 脚本:
    cd Python-3.8.2
    ./configure --enable-optimizations --enable-loadable-sqlite-extensions
    

    脚本会执行一些检查,以确保您的系统上所有依赖项都存在。--enable-optimizations选项将通过运行多个测试来优化Python二进制文件,这将使构建过程变慢。

    1. 运行make开始构建过程:
    make -j 4
    

    -j修改为您处理器中的核心数。您可以通过键入nproc来找到该数字。

    1. 构建完成后,以具有sudo访问权限的用户身份运行以下命令安装Python二进制文件:
    sudo make altinstall
    

    不要使用标准的make install,因为它会覆盖默认的系统python3二进制文件。

    1. 此时,在您的Debian系统上已安装Python 3.8,并且可以使用。您可以通过输入以下内容进行验证:
    python3.8 --version
    Python 3.8.2
    

    来源:https://linuxize.com/post/how-to-install-python-3-8-on-debian-10/


    在安装时尝试添加./configure --enable-shared关键字。 - alex_noname
    谢谢您的回复。我已经成功编译了,但是当我运行“python3.8 --version”时,出现了以下错误:python3.8: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory。我猜测这是缺少python3.8-dev软件包导致的同样问题。 - user1491229
    5
    如果一些教程随意添加开关(比如sqlite之类的)并安装了一堆依赖却没有明确解释这些依赖是用来做什么或为什么需要它们,那我并不是很喜欢。 - Xaser
    安装过程很顺利,但是在按照Linuxize的指示操作后,出现了警告信息UserWarning: Could not import the lzma module. Your installed Python is incomplete。这些指示没有包括库liblzma-dev - xtian
    如果我想尝试使用 apt(而不是手动安装)安装,没有使用 deadsnakes ppa,该怎么办? - Victor Alessander
    显示剩余2条评论

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接