检测setup.py中的pip

min*_*nrk 12 python pip easy-install

要点:在setup.py中检测到我们被触发的最佳方法是pip install package什么?

背景:我有一个包(C库的绑定),我提供包含库本身的蛋.在我的自述文件中,我注意到这个软件包在某些平台上是"easy_install-able".从源代码构建时(例如使用pip),库本身就是构建依赖项.问题是我经常让那些错误地认为pip完全替代easy_install的用户感到困惑,并期望pip install package在没有库的系统上工作,或者甚至没有编译器,其中的鸡蛋是他们真正想要的.

我想检测到构建是由pip触发的,所以如果由于缺少库而失败,我可以提供友好的"pip!= easy_install"消息.它不需要是完美的,只需抓住最常见的情况pip install package.在检查时,似乎没有一种特别强大的方法来做到这一点,我想出的最好的是:

probably_using_pip = '--single-version-externally-managed' in sys.argv
Run Code Online (Sandbox Code Playgroud)

是否有更好的(或更好的,官方的)方法来检测来自setup.py的pip?

Sna*_*fee -2

您是否可以尝试使用 subprocess/os 来尝试运行 pip,然后如果失败,您就知道没有 pip。

  • 知道 pip 存在并没有帮助,因为我正在寻找它是否实际在使用。另外,更简单的检查 pip 是否存在的方法是“import pip”。 (4认同)