繁体   English   中英

检测setup.py中的pip

[英]detect pip in setup.py

要点:在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

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

如果从pip运行,安装程序中的__file__会提供类似/tmp/pip-DNpsLw-build/setup.py

from setuptools import setup

def determineInstaller():
    if 'pip' in __file__:
        print('========pip triggered build========') #add smiley for friendliness :)
    return 'dummy description'

setup(name='bla',
      version='0.0',
      description=determineInstaller(),
      )

您是否考虑过建造可以安装的轮子

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM