如何从我的虚拟环境中更新/升级 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 update
和pip 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 --upgrade
docs.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:\>
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 本身?的主要内容,如果未能解决你的问题,请参考以下文章
将我的 ubuntu 服务器升级到 10.04 后如何修复我的虚拟主机设置
Pycharm 创建虚拟环境Venv并安装独立的三方库,发生Non-zero exit code,且更新pip无效的问题并解决