Gist: Каков наилучший способ обнаружения в setup.py, который мы вызываем pip install package
?обнаружить pip в setup.py
Фон: У меня есть пакет (привязки для C-библиотеки), для которого я предоставляю яйца, которые включают в себя самую библиотеку. В моем readme/docs я отмечаю, что этот пакет «easy_install-able» на определенных платформах. При построении из источника (например, с помощью pip) сама библиотека является зависимой от сборки. Проблема в том, что я несколько регулярно путаю пользователей, которые ошибочно полагают, что pip - полная замена easy_install, и ожидают, что pip install package
будет работать с системами без библиотеки или даже без компилятора, где яйцо - это то, чего они действительно хотят.
Я хотел бы обнаружить, что сборка была вызвана пипсом, поэтому я могу предоставить дружественное сообщение «pip! = Easy_install», если оно не удается из-за отсутствия библиотеки. Он не должен быть идеальным, просто поймайте наиболее распространенные случаи pip install package
. При осмотре, это не кажется, что есть особенно надежный способ сделать это, и лучшее, что я придумал это:
probably_using_pip = '--single-version-externally-managed' in sys.argv
Есть ли лучше (или, еще лучше, официальный) способ обнаружения pip от setup.py?
Почему сообщение об ошибке должно быть иным, чем при запуске «setup.py install», когда библиотека отсутствует? – joeforker
Когда вы запускаете 'setup.py install', вы, безусловно, строите из источника. Когда вы запускаете 'pip install', люди могут ожидать двоичные файлы, но не получать их (пользователи действительно не понимают различий между pip и easy_install). Этот вопрос больше не относится к моему конкретному случаю, потому что pip 1.5 поддерживает колеса по умолчанию. – minrk
Еще один контекст: во время запроса (два года назад) мой пакет часто устанавливался на компьютерах, у которых нет компилятора, а pip не поддерживает двоичных форматов. easy_install работал отлично, но pip не смог скомпилировать. Из-за этого я хотел сообщить людям, чья 'pip install' не удалась, что easy_install может быть предпочтительнее. – minrk