【问题标题】:I keep getting a message to upgrade pip我不断收到升级 pip 的消息
【发布时间】:2019-01-09 16:20:58
【问题描述】:

每当我创建一个 venv 时,我都会收到一条消息,要求我升级 pip。我运行升级命令,它在另一个 venv 上再次弹出。我怎样才能使它永久化。

消息:

You are using pip version 9.0.1, however version 18.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

更新: 刚刚收到建议阅读这个可能重复的答案:virtualenv use upgraded system default pip

但这并不能解决我的问题。为什么?

我的pip3 似乎已经是最新的了:

C:\Users\mkupfer\Python-Sandbox\sibc-python-scripts>pip --version
pip 18.0 from c:\users\mkupfer\appdata\local\programs\python\python36-32\lib\sit
e-packages\pip (python 3.6)

C:\Users\mkupfer\Python-Sandbox\sibc-python-scripts>pip3 --version
pip 18.0 from c:\users\mkupfer\appdata\local\programs\python\python36-32\lib\sit
e-packages\pip (python 3.6)

C:\Users\mkupfer\Python-Sandbox\sibc-python-scripts>pip3 install --upgrade pip
Requirement already up-to-date: pip in c:\users\mkupfer\appdata\local\programs\p
ython\python36-32\lib\site-packages (18.0)

已解决

解决方案:我能够通过使用virtualenv 创建一个新的虚拟环境来完全解决这个问题。不确定这是否是venv 中的错误。我将只使用可以继续使用的软件包。感谢@James Lim 的回答。

【问题讨论】:

  • 你在哪里运行重新安装pip的命令?消息出现在哪里? pip 可能需要在您的 venv 中更新,但您正在尝试在另一个环境中更新
  • @Dyno 我想有两种方法可以回答这个问题。 1. 我在 cmd 提示符内的 windows 上运行。 2.激活后的venv内部。
  • 当我在 venv 之外安装时,不会显示此消息。
  • 我一直收到此消息,无法升级,很高兴知道原因和解决方案。

标签: python pip python-venv


【解决方案1】:

问题似乎是 new 虚拟环境使用的是旧版本的 pip。请注意,pip 是从 virtualenv 中包含的源 tarfile(或 wheel)安装的,位于 site-packages/virtualenv_support 目录中。

$ ls -l /path/to/site-packages/virtualenv_support
pip-9.1-py2.py3-none-any.whl

解决此问题的一种快速方法是确保在创建新的 virtualenv 时升级 pip,如下所示:

$ virtualenv venv
$ venv/bin/pip install -U pip

或者,确保您拥有最新版本的 virtualenv。根据他们的release notesvirtualenv==16 使用的是pip==10

$ pip install -U virtualenv

最后,由于 virtualenv 在virtualenv_support 中查找pip*.whl,这也将起作用:

$ mv /path/to/site-packages/virtualenv_support/pip*.whl{,bak}
$ pip wheel -w /path/to/site-packages/virtualenv_support/ 'pip==18'

所有新的 virtualenvs 都将使用您安装到 virtualenv_support 中的 pip 版本。但是,这感觉很老套。

(尝试使用 virtualenv==16。这会导致所有新的 virtualenvs 的 pip==18。)

【讨论】:

  • 感谢您的详尽回复。关于你让我运行的命令,一切都指向我的 3.6 版本的 python,并且执行 pip list 表明我的 pip 是 18.0。似乎venv 命令正在使用不同的版本。这可能吗?
  • 另外:$ python -m pip install -U pip 只返回Requirement already up-to-date: pip in c:\users\mkupfer\appdata\local\programs\p ython\python36-32\lib\site-packages (18.0)
  • 所以virtualenv 在版本15.1.0 上。我更新到 16.0.0 但仍然有旧版本的 pip。 pip list 表示我还在pip (9.0.1)
  • 您是否创建了新的虚拟环境,并验证了新虚拟环境中的 pip 版本是否为 9.0.1?是这样的话,那么virtualenv的发行说明是错误的。另外,你看过virtualenv_support的内部吗?
  • 我确实注意到我有一个pipenv 9.0.3。是否需要删除/更新?
【解决方案2】:

对我来说,您似乎有多个 python 环境,并且在其中一个环境中,没有升级的 pip。你有两个选择:

  • 导航到每个文件夹并更新每个 pip
  • 您可以删除所有这些,重新安装并在将来使用正确的 pip 使用 virtualenv
  • 安装一些 IDE(例如 PyCharm),它可以自动为您处理并直观地显示所有问题

【讨论】:

  • 通过多个python环境,您是在谈论虚拟环境还是python安装本身?
  • 两者。看起来您将 Python 安装到了某个自定义目录。我更喜欢将它安装到一个文件夹中,例如:`C:\Python36`。所以每次我看到所有版本都在哪里并且能够卸载它。最好的方法是主要使用来自 virtualenv 的 python,而不是 root。
  • @Maksim,尝试完全卸载 Python 并安装最新版本。在为您的项目创建新的虚拟环境之后。
  • 那仍然没有解决我的问题。除非我没有正确卸载,但这有点令人困惑。我也不想用大的IDE,IDLE没问题。
  • 您在同一台 PC 上安装过另一个版本的 Python 吗?比如2.7?
【解决方案3】:

从 bat 文件更新 pip:

call .\venv\Scripts\activate
py -m pip install --upgrade pip
call deactivate

或者如果你在 VS Code 集成终端中

& venv/Scripts/activate.ps1
py -m pip install --upgrade pip

【讨论】:

  • 这不是我正在寻找的解决方案类型。我宁愿让事情正常运行,也不愿创建解决方法脚本。
  • @Maksim 道歉,我假设您可能一直在从脚本创建 virtualenv,因此可能有幸添加一两行代码。
  • 我使用了“pip install --upgrade pip”,它可以工作....
【解决方案4】:

升级pip时会卸载旧版本,但如果旧版本在不同的地方它不能,因此最终会出现两个不同的pip版本。检查根 PYTHONPATH 上的安装。 PYTHONPATH 也可能与系统路径不同。

【讨论】:

    【解决方案5】:

    这是您问题的解决方案。

    第 1 步: 在你的 shell 或 jupyter notebook 中运行这个命令 它将安全地从 pypa 下载 get-pip.py

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

    第 2 步: 在代码下面运行

    python get-pip.py
    

    【讨论】:

      【解决方案6】:

      对我来说,我只是跑:

      pip install -U virtualenv
      

      然后我的问题解决了。

      我从@James-lim 那里得到了这个答案 非常感谢他。

      【讨论】:

      • 请不要转发答案。如果答案有帮助,请点赞。
      猜你喜欢
      • 2016-06-24
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多