【问题标题】:pip version mismatch in venvvenv中的pip版本不匹配
【发布时间】:2019-02-26 14:39:01
【问题描述】:

我对虚拟 Python 环境的工作方式感到困惑(Python 3.6,使用 venv)。我设置了我的 venv,并在命令行中激活了它。我希望从那时起我所做的一切都使用虚拟环境中的 python 和 pip 命令(因为这些目录在激活时被添加到 PATH 中)。

问题是,当我在 venv 中运行 pip --version 时,它会返回 pip 10.0.1。但是当我尝试用python -m pip install --upgrade pip 升级它时,我得到Requirement already up-to-date

(venv) PS C:\Python\files\myproj> pip --version
> pip 10.0.1 from c:\python\files\myproj\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip (python 3.6)
(venv) PS C:\Python\files\myproj> python -m pip install --upgrade pip
> Requirement already up-to-date: pip in c:\python\files\myproj\venv\lib\site-packages (18.0)

那么发生了什么?为什么命令行命令的目标 pippython 不同?以及如何解决这个问题?

【问题讨论】:

  • 您的pip 命令指向了与您的venv 中的版本不同的其他pip 版本。 python -m pip 使用您的 venv 中的版本。
  • 那么当处于活动状态的venv 中时,pip 版本是全局版本吗?而且只有全局的python 换成了venv的python?
  • 您的 PATH 变量似乎没有正确设置。
  • 你能扩展一下吗?
  • pip 10.0.1 应该被update 卸载了,pip listpip uninstall pip 10.0.1 在youe venv 中怎么样,再更新

标签: python pip python-venv


【解决方案1】:

pip 仍然指向全局变量,即使在 venv 中也是如此。但是,python 并没有使用 venv。

这意味着当您运行 pip --version 时,您将获得全局 pip 版本。当你运行python -m pip install --upgrade pip 时,你使用的是 venv 版本的 python,它显然已经有了最新的 pip。要确认这一点,您可以运行python -m pip --version,您应该会得到最新版本作为输出。

【讨论】:

  • 但是为什么当我在激活的环境中使用pip install a-package 时,包是安装在环境中而不是全局安装的?
  • 嘿,@BramVanroy,你为什么不接受我的回答?您在 cmets 中问的是另一个问题。
  • 至少在我的设置中,不会发生这种情况。 $ python3 -m pip --version pip 19.3.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7) $ source env/bin/activate $ python3 -m pip --version pip 19.2.3 from /Users/mtopol/python/env/lib/python3.7/site-packages/pip (python 3.7)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 2022-12-29
  • 2023-03-29
  • 2021-01-26
  • 2019-08-25
  • 2017-08-03
  • 1970-01-01
相关资源
最近更新 更多