问题描述
在我的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
。