如何在不更改任何默认值的情况下在 Ubuntu 上为 python 3.8 安装 pip?

Qum*_*ber 15 python ubuntu pip python-3.x ubuntu-18.04

我试图安装pipPython 3.8Ubuntu 18.04 LTS

我知道这已经被问了太多次了。但是这些问题并不特别关注保留 Ubuntu 的默认值。而这些问题的答案要么不起作用,要么继续提出一些过于激烈的建议,以至于会破坏系统——例如将默认python3版本从更改3.63.8。你不应该

到目前为止,我已经能够python3.8使用PPA-成功安装ppa:deadsnakes/ppa

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.8
Run Code Online (Sandbox Code Playgroud)

python命令从更改python2python3.8使用update-alternatives

update-alternatives --remove python /usr/bin/python2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 10
Run Code Online (Sandbox Code Playgroud)

现在,python 3.8我运行时得到python --version

蟒蛇 3.8.5

问题是,我仍然无法安装pipfor Python 3.8.
如果我尝试安装python3-pip,它会安装pipforPython 3.6因为python3仍然指向python3.6.9,我打算保持这种方式。
尝试安装python-pip,它将pipPython 2.7.
也没有这样的包python3.8-pip,所以我不能像这样安装它:

sudo apt install python3.8-pip
Run Code Online (Sandbox Code Playgroud)

输出:

E: 无法找到包 python3.8-pip
E: 无法通过 glob 'python3.8-pip'
找到任何包 E: 无法通过正则表达式 'python3.8-pip' 找到任何包

我能做些什么来安装pipPython 3.8的Ubuntu 18.04?

Qum*_*ber 16

虽然我们可以pip直接作为 Python 使用module(推荐的方式):

python -m pip --version
Run Code Online (Sandbox Code Playgroud)

这就是我安装它的方式(因此可以直接调用它):
首先,确保该命令pip可用并且没有被pipforPython 2.7

sudo apt remove python-pip
Run Code Online (Sandbox Code Playgroud)

现在,如果您pip在终端中写入,您会发现那里没有安装任何东西:

pip --version
Run Code Online (Sandbox Code Playgroud)

输出:

找不到命令“pip”,但可以使用以下命令安装:

sudo apt 安装 python-pip

使用命令安装python3.8和设置正确的版本(如问题中所述)。pythonupdate-alternatives

确保您已python3-pip安装 :(
没有 就无法工作python3-pip。虽然这会安装pip 9.0.1 from python 3.6,但我们需要它。)

sudo apt install python3-pip
Run Code Online (Sandbox Code Playgroud)

这将安装pip 9.0.1pip3

pip3 --version
Run Code Online (Sandbox Code Playgroud)

输出:

来自 /usr/lib/python3/dist-packages (python 3.6) 的 pip 9.0.1

现在,要安装pipfor Python 3.8,我pip将其称为python module具有讽刺意味!):

python -m pip install pip
Run Code Online (Sandbox Code Playgroud)

输出:

收集PIP
  下载https://files.pythonhosted.org/packages/36/74/38c2410d688ac7b48afa07d413674afc1f903c1c1f854de51dc8eb2367a5/pip-20.2-py2.py3-none-any.whl(1.5MB)
  100%| ????????? ???????????????????????????| 1.5MB 288kB/s
安装收集包:pip
成功安装 pip-20.2

看起来,当我调用pip(它是为 Python 3.6 安装的,顺便说一句)作为 Python 3.8 的模块并安装时pip,它实际上工作了。

现在,确保您的~/.local/bin目录设置在PATH环境变量中:使用您喜欢的编辑器
打开~/.bashrc(如果您正在使用zsh,请替换.bashrc.zshrc

nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

并将以下内容粘贴到文件末尾

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
Run Code Online (Sandbox Code Playgroud)

最后,获取您的.bashrc(或重新启动终端窗口):

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

现在,如果您尝试pip直接运行,它将为您提供正确的版本:

pip --version
Run Code Online (Sandbox Code Playgroud)

输出:

来自 /home/qumber/.local/lib/python3.8/site-packages/pip (python 3.8) 的 pip 20.2

甜的!


Vai*_*and 15

正如官方文档中建议的,您可以尝试使用get-pip.py.

wget https://bootstrap.pypa.io/get-pip.py
python3.8 get-pip.py
Run Code Online (Sandbox Code Playgroud)

这会将 pip 安装为 pip3.8。

- - 更新

确保您已python3.8-distutils安装以避免出现以下错误

"No module named 'distutils.cmd'" error.
Run Code Online (Sandbox Code Playgroud)

您可以distutils使用以下方式安装:

sudo apt install python3.8-distutils
Run Code Online (Sandbox Code Playgroud)

  • ModuleNotFoundError:没有名为“distutils.cmd”的模块 (3认同)

mir*_*phd 7

# install py3.8 and dependencies for the pip3 bootstrap script
add-apt-repository -y ppa:deadsnakes/ppa && \
    apt install -y python3.8 python3.8-distutils

# download and run the pip3 bootstrap script
cd /tmp && wget https://bootstrap.pypa.io/get-pip.py && \
    python3.8 /tmp/get-pip.py

# use pip py3.8 module to install python packages
python3.8 -m pip install numpy pandas
Run Code Online (Sandbox Code Playgroud)


小智 5

另一个解决方案是安装 apt 中的 pip。sudo apt install python3-pip。它安装的 pip 版本适用于所有版本的 Python,而不仅仅是 3.6 版本。一旦安装,您只需使用命令更新 pip python3.8 -m pip install pip,他就会安装适用于 Python 的最新版本的 pip。

我不建议你删除Python2,因为它是系统的一个重要模块,你应该为.bashrcPython3创建一个永久的“别名”,我确实喜欢这样alias python="python3.8