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-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
如果您正在构建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标准库应该包括Python3.5+版本的ensrepip,但发行版维护人员似乎将安装程序分成了更小的部分。