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
如果您在运行
No module named 'distutils.util'
时遇到类似 python3.9 get-pip.py
的错误,并且您使用的是基于 Debian 的 Linux 发行版,请运行
sudo apt install python3.9-distutils
然后重新运行您的
get-pip.py
命令。如果您使用的不是基于 Debian 的发行版,请对您的发行版的包管理器使用等效命令。
这些说明部分基于 pip 维护人员提供的官方安装说明。
我的这部分答案有点超出了问题的范围,因为这个问题是专门针对 python 3.9 的。但是,对于尝试在 python 3.6 或更早版本上安装 pip 的人来说,在 https://bootstrap.pypa.io/get-pip.py 编写文件时仅支持 python 3.7 或更高版本。
解决方法是从
https://bootstrap.pypa.io/pip/<python version>/get-pip.py
下载。例如,如果您想为 python 3.6 安装 pip,那么您可以从 https://bootstrap.pypa.io/pip/3.6/get-pip.py 下载,然后照常执行上述所有步骤.
仅依赖于
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。
此方法是在 Ubuntu 18 上出现的一个问题。针对 OP 目标(20.04)的线程中的其他提案不起作用。 PyPa 的安装脚本在 Ubuntu 18 上结束为:
python3.9 get-pip.py
# ...
# AttributeError: 'HTMLParser' object has no attribute 'unescape'
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
如果其他人在他们的 pip 中遇到看似奇怪的 WSL2 行为,TechDog 的建议修复了我的 WSL2 Ubuntu 20.04。正如 TechDog 发布的那样,正是 update-alternatives 行成功了!
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
如果您正在构建 Docker 容器,则以下 Dockerfile 将在 Ubuntu 20.04 (LTS) 上安装 Python 3.9:
FROM ubuntu:20.04
RUN set -ex && \
apt install -y \
software-properties-common && \
add-apt-repository -y ppa:deadsnakes/ppa && \
apt install -y \
python3.9 \
python3.9-distutils \
python3.9-venv && \
python3.9 --version && \
python3.9 -m ensurepip && \
pip3.9 --version
ENTRYPOINT []
software-properties-common
套餐介绍了add-apt-repository
。安装 python3.9-distutils
和 python3.9-venv
可以直接调用 ensurepip
。
无论如何,Python 标准库应该包含 Python 3.5+ 的 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
以链接到 python3.9
,则 pip3
将使用 python3.9 进行解释,并且您将获得针对 python3.9
的工作点
我已经使用这个两年了,没有出现任何问题,但请祈祷,因为这根本不是一个好的做法,如果
python3-pip
和 python3.9
存在兼容性问题,它就会崩溃。
以下是我在 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
这在 Ubuntu 18.04 上对我有用:
$ python3.9 -m ensurepip
这可能只是文件错误,请尝试:
apt install python3-pip
有点简单,但很有效。