如何从我的虚拟环境中更新/升级 pip 本身?

Posted

技术标签:

【中文标题】如何从我的虚拟环境中更新/升级 pip 本身?【英文标题】:How do I update/upgrade pip itself from inside my virtual environment? 【发布时间】:2013-02-19 17:12:00 【问题描述】:

我可以更新 pip 管理的软件包,但是如何更新 pip 本身?根据pip --version,我目前在我的 virtualenv 中安装了 pip 1.1,我想更新到最新版本。

这个命令是什么?我需要使用分发还是有本地 pip 或 virtualenv 命令?我已经尝试过pip updatepip update pip 没有成功。

【问题讨论】:

pip install --upgrade pip?这只是另一个 PyPI 包。 那个命令给了我“/Users/zak/MyProject/venv/bin/pip install: error: no such option: --update” 这是--upgrade,不是--update,抱歉。我立即编辑了我的帖子,但你一定是在错误的时间看到它。 @Cairnarvon 与pip3 的命令不同吗?我正在尝试 pip3 但它只是告诉我它找不到它然后继续抱怨它不是最新的......当它甚至不允许我更新/升级它时! 【参考方案1】:

pip 只是一个PyPI package 和其他的一样;您可以使用它来升级自身,就像升级任何软件包一样:

pip install --upgrade pip

在 Windows 上,recommended command 是:

python -m pip install --upgrade pip

【讨论】:

在 Windows 下,我在尝试使用 pip 升级 pip 时遇到了权限问题。相反,我使用 easy_install 进行升级:easy_install pip 当我这样做时,这个 pip 似乎升级了(1.1 -> 1.4),但是当我执行“pip --version”时,它仍然显示旧版本 1.1。尝试再次停用并激活 virtualenv,但它仍然显示旧版本。 在 Windows 上使用这样的命令可能会更好:python -m pip install --upgrade pip 以避免从脚本目录运行 pip.exe。 @Zitrax 你解决了这个问题吗?我也面临同样的问题。 @Mohammadalibaghershemirani 抱歉,这是不久前的事了——不记得了。【参考方案2】:

比较安全的方法是run pip though a python module:

python -m pip install -U pip

在 Windows 上,尝试替换自身的二进制文件似乎存在问题,此方法可以解决该限制。

【讨论】:

如果 pip 检测到自己的更新版本,这就是现在的建议。 我相信这更安全的原因是因为在某些操作系统(Windows)上,直接运行 pip 可以在可执行文件上创建文件锁定,这将阻止更新它。通过调用 Python 并告诉它直接加载模块,您可以避免访问可执行文件。 您必须在管理员模式下运行命令提示符才能使其工作。我尝试了其他几个建议,但没有任何效果,直到我以管理员模式重新启动命令提示符窗口,然后该命令完美运行。 现在我收到了这个错误,ModuleNotFoundError: No module named 'pip'【参考方案3】:

在我的情况下,这在 Debian Stable 的终端命令行中起作用

python3 -m pip install --upgrade pip

【讨论】:

【参考方案4】:

在我的情况下,我的 pip 版本已损坏,因此更新本身无法正常工作。

修复:

(inside virtualenv):easy_install -U pip

【讨论】:

这也是我的情况。我尝试了所有其他方法,但只有这个对我有帮助。谢谢! 这里也一样,这是在 Debian 上对我有用的唯一方法。使用 python 或 pip 从 virtualenv 中升级 pip 会失败,因为它拒绝卸载 venv 之外的现有 pip。 运行它向我展示了很多东西,包括运行 --upgrade 时未显示的 Download error on https://pypi.python.org/simple/pip/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found!。这可能是安装任何 pip 包失败以及为什么通过 pip 升级 pip 也失败的原因,SSL 似乎坏了。 救命稻草,谢谢。尝试了其他所有方法,只有这在 Windows 10 上有效。 在 Linux Mint 上完美运行【参考方案5】:

我在 Debian Jessie 下尝试了上面提到的所有这些解决方案。它们不起作用,因为它只需要 debian 包管理器编译的最新版本,即 1.5.6,相当于版本 6.0.x。某些使用 pip 作为先决条件的软件包将无法作为结果运行,例如 spaCy(它需要选项 --no-cache-dir 才能正常运行)。

因此,解决这些问题的实际最佳方法是运行使用 wget、从网站或使用 curl 下载的 get-pip.py,如下所示:

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

这将安装当前版本,在编写此解决方案时为 9.0.1,这远远超出了 Debian 提供的版本。

 $ pip --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python2.7/dist-packages (python 2.7)
 $ pip3 --version
 pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python3.4/site-packages (python 3.4)

【讨论】:

pip install --upgrade pip失败时很有帮助 如果我能对这个答案投票几次,我会的。这刚刚通过更新到 pip 10.x 解决了 pip 9.x 因 SSL 错误而失败的问题。见***.com/questions/25981703/… 好吧,如果你曾经投票过,我会很高兴。我的答案通常是从一两个小时的狩猎和多年的经验中找到的。不能对我的问题说同样的话吗?人真的可以很刻薄! :)【参考方案6】:

为了让它为我工作,我必须使用 Python 命令提示符(在 VS CODE 的 WIN10 上)深入 Python 目录。就我而言,它位于我的“AppData\Local\Programs\Python\python35-32”目录中。现在我从那里运行命令...

python -m pip install --upgrade pip

这很有效,我很高兴。

【讨论】:

【参考方案7】:

我在 C:\Python\Python36 中安装了 Python,所以我转到 Windows 命令提示符并键入“cd C:\Python\Python36”以进入正确的目录。然后输入“python -m install --upgrade点子“一切都好!

【讨论】:

【参考方案8】:

在装有 Windows 7 的笔记本电脑上,安装最新版本 pip 的正确方法是:

python.exe -m pip install --upgrade pip

【讨论】:

【参考方案9】:

非常简单。只需从https://bootstrap.pypa.io/get-pip.py 下载 pip。将文件保存在某个 forlder 或 dekstop 中。我将文件保存在我的 D 驱动器中。然后从命令提示符导航到下载 pip 的文件夹。然后在那里输入

python -get-pip.py

【讨论】:

【参考方案10】:

使用管理员权限打开命令提示符,然后重复命令:

python -m pip install --upgrade pip

【讨论】:

这不是和现有的一些答案一样吗? 是的,但是,我遇到了这个问题,当我使用管理员权限运行 CMD 时它得到了解决。【参考方案11】:

pip 版本 10 存在问题。它将表现为错误:

ubuntu@mymachine-:~/mydir$ sudo pip install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

解决办法是在你要升级的venv中然后运行:

sudo myvenv/bin/pip install --upgrade pip

而不仅仅是

sudo pip install --upgrade pip

【讨论】:

【参考方案12】:

单行 Python 程序 我发现最好的方法是编写一个单行程序来下载并运行官方的 get-pip 脚本。代码见下文。

官方文档推荐使用 curl 下载 get-pip 脚本,但由于我在 windows 上工作并且没有安装 curl,我更喜欢使用 python 本身来下载和运行脚本。

这是可以使用 Python 3 通过命令行运行的单行程序:

python -c "import urllib.request; exec(urllib.request.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

此行根据installation notes 获取官方的“get-pip.py”脚本,并使用“exec”命令执行该脚本。

对于 Python2,您可以将“urllib.request”替换为“urllib2”:

python -c "import urllib2; exec(urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

注意事项 值得注意的是,盲目地运行任何 python 脚本本质上是危险的。出于这个原因,官方说明建议下载脚本并在运行前检查它。

也就是说,很多人实际上并没有检查代码而只是运行它。这个单行程序使这更容易。

【讨论】:

【参考方案13】:

我在树莓派上遇到了类似的问题。

问题是 http 需要 SSL,所以我需要强制它使用 https 来绕过这个要求。

sudo pip install --upgrade pip --index-url=https://pypi.python.org/simple

sudo pip-3.2 --upgrade pip --index-url=https://pypi.python.org/simple/

【讨论】:

【参考方案14】:

由于可怕的证书问题,使用“pip install --upgrade pip”升级 pip 并不总是有效:There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version

我喜欢对虚拟环境使用 一行 命令:

curl https://bootstrap.pypa.io/get-pip.py | python -

或者如果你想在盒子宽的地方安装它,你需要

curl https://bootstrap.pypa.io/get-pip.py | sudo python -

如果你想在自动化脚本中运行时使输出静音,你可以给 curl 一个 -s 标志。

【讨论】:

【参考方案15】:

如果您使用 venv,对 pip install 的任何更新都将导致升级系统 pip 而不是 venv pip。您还需要升级 pip 引导程序包。

  python3 -m pip install --upgrade pip setuptools wheel

【讨论】:

成功安装后 python 列表仍然显示旧版本的 pip。如何将最新版本指向当前环境 我应该做$HOME/venv/bin/python3还是只做python3 如果您使用源 /path/to/myvenv/bin/activate 激活了 venv,则只需使用 python3 甚至只是 python。如果它没有被激活运行/path/to/myvenv/bin/python3 python3 -m pip install --upgrade pip setuptools wheel /usr/bin/python3: No module named pip 一些发行版发布了没有 pip 的 python3 版本。最简单的方法是在同一个 python 安装中使用 ensurepip 和 bootstrap pip。 python3-m ensurepip --upgradedocs.python.org/3/library/ensurepip.html【参考方案16】:

我遇到了类似的情况,想更新 urllib3 包。 对我有用的是:

pip3 install --upgrade --force-reinstall --ignore-installed urllib3==1.25.3

【讨论】:

【参考方案17】:

对于windows

转到命令提示符 并使用此命令 python -m pip install -–upgrade pip 别忘了重启编辑器,以免出错 您可以通过以下方式查看pip 的版本 pip --version 如果您想安装任何特定版本的pip,例如version 18.1 ,请使用此命令, python -m pip install pip==18.1

【讨论】:

纠正一个错字,应该是,python -m pip install --upgrade pip 更正了错字,@shantanupathak,感谢您提供信息。【参考方案18】:

首先,这样做:

sudo apt install python3-pip python-setuptools-doc

然后,来自非root 操作系统用户(永远,永远不要在root 操作系统用户下运行pip* !!!):

# N.B. bash shell works for this, I have never tested with other shells!
. ....your_virtualenv_folder/bin/activate
pip3 install -U pip

注意:据我所知,-U--upgrade 的同义词。

【讨论】:

【参考方案19】:

Linux

python3 -m pip install --upgrade pip

对于窗户:

1.在Windows搜索框中输入命令提示符

2.在命令提示符中,输入“cd\”

3.回车,你会看到驱动名C:\&gt;

4.找到你的Python应用路径,也就是你最初安装Python的文件夹

以下是 Python 应用程序路径的示例:

C:\Users\Ron\AppData\Local\Programs\Python\Python39

5.检索到 Python 应用程序路径后,在命令提示符中键入以下命令:

cd 后跟您的 Python 应用程序路径

对于我们的示例:

C:\>cd C:\Users\Ron\AppData\Local\Programs\Python\Python39

6.按回车

7.输入python -m pip install --upgrade pip并回车

【讨论】:

【参考方案20】:
pip install --upgrade pip

在 UBUNTU 18.04 中执行上述命令时出现以下错误:

ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/local/bin/pip'
Consider using the `--user` option or check the permissions.

下面的命令解决了我的问题:

pip install --upgrade pip --user

【讨论】:

【参考方案21】:

前往您的命令提示符并输入以下内容:

python -m pip install --upgrade pip

【讨论】:

【参考方案22】:

linux

我会用这段代码更新

sudo -H pip3 install --upgrade pip

【讨论】:

以上是关于如何从我的虚拟环境中更新/升级 pip 本身?的主要内容,如果未能解决你的问题,请参考以下文章

树莓派中设置Python虚拟开发环境

将我的 ubuntu 服务器升级到 10.04 后如何修复我的虚拟主机设置

虚拟环境 - 搭建 | pycharm使用虚拟环境

Pycharm 创建虚拟环境Venv并安装独立的三方库,发生Non-zero exit code,且更新pip无效的问题并解决

Python 虚拟环境

如何将Python包pip-install到虚拟环境中,并在普通shell中访问CLI命令