要点:在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?
答案 0 :(得分:3)
__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(),
)
答案 1 :(得分:0)
您是否考虑过建立可以安装pip的wheels?
答案 2 :(得分:-1)
你是否可以尝试使用subprocess / os来尝试运行pip,然后如果失败,你知道没有pip。