обнаружить пипс в setup.py - PullRequest
       5

обнаружить пипс в setup.py

12 голосов
/ 01 апреля 2012

Суть: Как лучше всего определить в setup.py, что мы запускаем pip install package?

Справочная информация: У меня есть пакет (привязки для C-библиотеки), для которого я предоставляю яйца, которые включают саму библиотеку. В моих файлах readme / docs я отмечаю, что этот пакет «easy_install-способен» на определенных платформах. При сборке из исходного кода (например, с помощью 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?

Ответы [ 3 ]

3 голосов
/ 30 апреля 2012

__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(),
      )
0 голосов
/ 07 марта 2014

Рассматривали ли вы строительство колес , которые может установить пипс?

0 голосов
/ 07 апреля 2012

Не могли бы вы, возможно, попробовать использовать подпроцесс / os для запуска pip, тогда, если он потерпит неудачу, вы знаете, что pip нет.

...