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



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

我继续安装了Python 3.9,来自:

sudo添加apt存储库ppa:死蛇/ppa

sudo apt安装python3.9

如何为python 3.9安装pip?

使用安装pipsudo 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维护人员提供的官方安装说明。


我的这部分回答有点超出了问题的范围,因为这个问题是专门针对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。


这个方法是在Ubuntu18上产生的一个问题。线程中针对OP目标(20.04(的其他提议没有奏效。PyPa的安装脚本在Ubuntu18上以结束

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 --install /usr/bin/python3 python3 /usr/bin/python3.9 1

这是一个奇怪的问题,但它是最简单的,而且很有效:

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的有效pip

我已经用了两年了,没有遇到任何问题,但祈祷吧,因为这根本不是一个好的做法,如果python3-pippython3.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

如果您正在构建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-distutilspython3.9-venv可以直接调用ensurepip

无论如何,Python标准库应该包括Python3.5+版本的ensrepip,但发行版维护人员似乎将安装程序分成了更小的部分。

相关内容

  • 没有找到相关文章

最新更新