在安装需求之前,`pip install -U pip -r requirements.txt`是否会升级pip?

问题描述

使用以下几种变体来设置Python虚拟环境似乎是一种常见做法:

python -m venv venv && source ./venv/bin/activate
python -m pip install -U pip -r requirements.txt

我希望以上命令可以执行以下操作:

  1. 升级pip
  2. requirements.txt中运行软件包的安装

但是,实际上似乎发生的是:

  1. 收集所有软件包,包括pip的最新版本
  2. 将它们全部安装在一起
    • 实际运行安装的是pip的原始/过时版本
    • 直到此命令之后,才使用新版本的pip

问题

  1. 是否可以在一个命令中先进行pip升级然后安装需求文件
    • 这会带来任何特殊好处吗?
  2. 我应该切换到以下内容吗?
python -m venv venv && source ./venv/bin/activate
python -m pip install -U pip
python -m pip install -r requirements.txt
  1. 安装需求文件的最佳方法是什么?
    • 我看到人们有时也会同时安装/升级wheelsetuptools

解决方法

您的问题的答案是:

  1. 不。 pip目前尚未将自己视为特殊的依赖项,因此它不知道先安装然后执行,这是克服您所观察到的问题所需采取的措施。
  2. 在单独的步骤中更新pip确实是继续进行的推荐方法。

您可能会不时看到pip发出一条消息,通知您有较新的版本。如果您是通过带有过时的pip的python创建的,则会发生这种情况。