【问题标题】:How do I install pip for python 3.8 on Ubuntu without changing any defaults?如何在不更改任何默认值的情况下在 Ubuntu 上为 python 3.8 安装 pip?
【发布时间】:2020-11-22 05:14:31
【问题描述】:

我正在尝试在Ubuntu 18.04 LTS 上为Python 3.8 安装pip

我知道这个问题已经被问过太多次了。但这些问题与保持 Ubuntu 的默认设置无关。而这些问题的答案要么不起作用,要么继续提出一些如此激烈的事情,以至于它会破坏系统 - 例如。将默认的python3 版本从3.6 更改为3.8。你不应该

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

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.8

使用update-alternativespython 命令从python2 更改为python3.8

update-alternatives --remove python /usr/bin/python2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 10

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

Python 3.8.5

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

sudo apt install python3.8-pip

输出:

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

如何在 Ubuntu 18.04 上为 Python 3.8 安装 pip

【问题讨论】:

    标签: python python-3.x ubuntu pip ubuntu-18.04


    【解决方案1】:

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

    python -m pip --version
    

    我是这样安装的(所以可以直接调用):
    首先,确保命令pip 可用并且pip 没有为Python 2.7 使用它

    sudo apt remove python-pip
    

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

    pip --version
    

    输出:

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

    sudo apt install python-pip

    安装python3.8 并使用update-alternativespython 命令上设置正确的版本(如问题中所做的那样)。

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

    sudo apt install python3-pip
    

    这会将pip 9.0.1 安装为pip3

    pip3 --version
    

    输出:

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

    现在,要为Python 3.8 安装pip,我使用pip 将其称为python module讽刺!):

    python -m pip install 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
    

    并在文件末尾粘贴以下内容

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

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

    source ~/.bashrc
    

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

    pip --version
    

    输出:

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

    甜蜜!

    【讨论】:

    • 在您的系统上运行 sudo apt remove python-pip 似乎非常危险。你确定这不会破坏任何东西吗?
    • @Arne 删除 python-pip 一点风险都没有。事实上 Ubuntu 并没有附带它。如果你的机器上有它,那可能是因为你安装了它。
    • 除非系统实用程序在代码中使用它来执行诸如获取已安装 python 包的信息之类的操作。无论如何,我只是插话表示怀疑并说“显然”是一个危险的词。如果您的系统预装了python-pip,请不要删除它并找到其他方法来安装最近的一个。如果你自己安装了它,你可能(不是很明显)删除它会很好。
    • 当然,如果您知道 python-pip 是预安装的或由任何其他程序作为依赖项安装的,最好保持原样。
    • @Timo,这可能是您的 pip3 二进制文件的问题。尝试升级或重新安装它 - python3 -m pip install pip --upgrade
    【解决方案2】:

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

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

    【讨论】:

    • 如果您尝试使用command python 以编程方式访问python3.8/pip 3. 8,如果您尝试使用python setup.py build 从源安装包,则设置别名将无济于事,如果您想由其他用户执行 python,例如sudo python 和许多其他情况。
    【解决方案3】:

    几天前我做了这个,我为此做了很多努力,但我终于让它工作了,所以我wrote up what I did as a blog post

    最后我想我可能做了与上述答案大致相同的事情,但如果你迷路了,也许我的截图等会有所帮助。

    这是我所做的过程的 tl;dr:

    • 卸载python3-pip & python-pip 使用apt
    • /usr/local/bin 中删除旧的pip 文件
    • 使用apt重新安装python3-pip
    • $HOME/.local/bin 添加到您的$PATH 中(同时重新启动您的shell 以确保您这样做是正确的)

    【讨论】:

      【解决方案4】:

      按照official documentation 的建议,您可以尝试使用 get-pip.py。

      wget https://bootstrap.pypa.io/get-pip.py
      python3.8 get-pip.py
      

      这会将 pip 安装为 pip3.8

      【讨论】:

      • 如果它在 18.04 上将二进制文件设置为 pip 命令,这看起来是一个非常优雅的解决方案。
      • @Qumber 然后你可以在 ~/.profile 中设置别名。它应该像alias pip='pip3.8'
      • ModuleNotFoundError: No module named 'distutils.cmd'
      【解决方案5】:
      # 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-10
        • 2021-04-15
        • 2017-07-28
        • 2019-07-05
        • 1970-01-01
        • 2014-10-13
        相关资源
        最近更新 更多