【问题标题】:Does `pip install -U pip -r requirements.txt` upgrade pip before installing the requirements?`pip install -U pip -r requirements.txt` 是否在安装要求之前升级 pip?
【发布时间】:2021-02-01 00:30:40
【问题描述】:

使用以下一些变体设置 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

【问题讨论】:

  • 我对 weels 有同样的问题,因为它破坏了我的 bcrypt 包安装。首先将 weels 安装作为单独的命令,然后是我的要求,效果很好。
  • 我认为您混淆了三件事:one commandone processa single line。您可以用两个命令编写一行来执行您想要的操作,但它永远不会是单个进程,因为根据定义,运行命令是使用二进制文件,因此二进制文件不能更改 在同一个流程执行中,使用这个更改后的新二进制版本来执行另一个步骤。根据定义(尽管您可能会从外部将其理解为一步),这将是一个接一个地执行的两个过程。

标签: python pip python-venv requirements.txt


【解决方案1】:

您的问题的答案是:

  1. 没有。 pip 目前不将自己视为特殊依赖项,因此它不知道安装然后执行自己,这是克服您观察到的问题所需要做的。
  2. 确实推荐在单独的步骤中更新pip

您可能会不时看到pip 发出一条消息,告知有更新的版本可用。如果您从带有过时 pip 的 python 创建它们,这种情况会发生很多。

【讨论】:

    猜你喜欢
    • 2013-09-08
    • 2020-08-17
    • 1970-01-01
    • 2020-01-11
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多