检查在点子安装过程中是否通过了--upgrade

问题描述

在我的setup.py文件中,我想检查--upgrade是否在pip install ...中传递,如果可以,我想运行一些代码

在此示例中,仅当在pip安装过程中传递了--upgrade时,才应打印“ Hello World”。

# setup.py

setup(...)

if "--upgrade was passed": # WHAT SHOULD I PUT HERE
  print("Hello World")

因此,如果我运行pip install package-name,则if语句将返回false,但是如果我运行pip install --upgrade package-name,则if语句将返回true,并且其中的代码将运行。

解决方法

我相信这是不可能的。 (这是故意的。)

运行setup.py时并不总是执行pip install YourProject(最常见的情况是从预构建的 wheel 安装时:不执行安装脚本)因为轮子甚至都不包含设置脚本)。而且,当 pip 确实触发了setup.py的执行时,它是非常间接的,并且 pip 的论点极不可能转发给setup.py。我知道以某种方式让 pip 将参数转发给setup.py的一种方法是(滥用)使用pip's --global-option