如何在 Ubuntu 20.04 上为 Python 3.9 安装 pip

How to install pip for Python 3.9 on Ubuntu 20.04

Ubuntu 20.04 附带 Python 3.8。 我无法卸载 Python 3.8 但我需要 Python 3.9

我继续安装 Python 3.9 来自:

sudo add-apt-repository ppa:deadsnakes/ppa

sudo apt install python3.9

如何为 python 3.9 安装 pip?

安装 pip 使用 sudo apt-get install python3-pip 对我不起作用,因为它为 python 3.8

安装了 pip

使用python3.9 get-pip.py安装pip报错:

~/python_tools$ python3.9 get-pip.py 
Traceback (most recent call last):
  File "/home/ubuntu/python_tools/get-pip.py", line 23704, in <module>
    main()
  File "/home/ubuntu/python_tools/get-pip.py", line 198, in main
    bootstrap(tmpdir=tmpdir)
  File "/home/ubuntu/python_tools/get-pip.py", line 82, in bootstrap
    from pip._internal.cli.main import main as pip_entry_point
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpkwyc8h7j/pip.zip/pip/_internal/cli/main.py", line 10, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpkwyc8h7j/pip.zip/pip/_internal/cli/autocompletion.py", line 9, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpkwyc8h7j/pip.zip/pip/_internal/cli/main_parser.py", line 7, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "/tmp/tmpkwyc8h7j/pip.zip/pip/_internal/cli/cmdoptions.py", line 18, in <module>
ModuleNotFoundError: No module named 'distutils.util'

您可以通过以下方式为 python 3.9 安装 pip

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3.9 get-pip.py

使用 python3.9 而不仅仅是 python3 很重要,以确保为 python 3.9.

安装 pip

如果您看到任何权限错误,您可能需要使用

python3.9 get-pip.py --user

如果您在 运行 python3.9 get-pip.py 时遇到类似 No module named 'distutils.util' 的错误,并且您使用的是基于 Debian 的 Linux 发行版,运行

sudo apt install python3.9-distutils

然后重新运行你的get-pip.py命令。如果您使用的不是基于 Debian 的发行版,请使用适用于您的发行版包管理器的等效命令。

这些说明部分基于 pip 维护者提供的 official installation instructions

Pip 默认包含在 python 3.4 及更高版本中。

python3.9 -m pip --version

如果由于某种原因没有安装 pip,您可以使用 get-pip 手动安装它:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3.9 get-pip.py

以下是我在 UBUNTU 16.4. 中安装的步骤,如果需要,请在前面加上 SUDO。我在命令行中使用 python 时遇到一些问题,所以我使用 update-alternatives 默认 python3.9 到 python 命令,请根据需要更改版本。

apt update
apt install software-properties-common
add-apt-repository ppa:deadsnakes/ppa -y
apt update
apt install python3.9
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3.9 get-pip.py

如果其他人 运行 从他们的 pips 进入看似奇怪的 WSL2 行为,TechDog 的建议修复了我的 WSL2 Ubuntu 20.04。就像 TechDog 发布的那样,update-alternatives 行成功了!

update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1

仅依赖 deadsnakes/ppa 的替代方法是安装 python3.9-venv

sudo apt-get install python3.9-venv
python3.9 -m venv venv
source venv/bin/activate
pip --version
# pip 21.1.3 from /home/.../venv/lib/python3.9/site-packages/pip (python 3.9)

随着时间的推移,也许更容易保持一致,但强制进入 Virtualenv。


此方法在Ubuntu18 上出现问题。针对OP 目标(20.04) 的线程中的其他建议无效。 PyPa 的安装脚本在 Ubuntu 18 结束:

python3.9 get-pip.py
# ...
# AttributeError: 'HTMLParser' object has no attribute 'unescape'

这对我有用 Ubuntu 18.04:

$ python3.9 -m ensurepip

这是一个奇怪的方法,但它是最简单的并且有效:

export PYTHON_VERSION_SHORT=3.9
apt-get install -y python${PYTHON_VERSION_SHORT} python3-pip && \
ln -s -f /usr/bin/python${PYTHON_VERSION_SHORT} /usr/bin/python3 && \
ln -s -f /usr/bin/python${PYTHON_VERSION_SHORT} /usr/bin/python && \
ln -s -f /usr/bin/pip3 /usr/bin/pip

当您安装 pip3 时,它(在撰写本文时)是为 python3.8 安装的。但是如果你将 /usr/bin/python3 覆盖到 link 再到 python3.9,那么 pip3 将被解释为 python3.9,你将有一个针对 python3.9

我已经使用它两年了,没有出现任何问题,但是祈祷吧,因为这根本不是一个好习惯,如果 python3-pippython3.9 存在兼容性问题,它就会崩溃。