Как определить, установлены ли Python setuptools?

Я пишу быстрые оболочки script, чтобы некоторые из наших разработчиков могли запускать Fabric. (Я также новичок в Python.) Часть установки Fabric устанавливает pip, а часть установки pip устанавливает setuptools.

Есть ли простой способ определить, установлено ли setuptools? Я хотел бы сделать несколько раз script, и он пропустит все, что уже сделано. Теперь, если вы дважды запускаете ez_setup.py, вы получите отказ во второй раз.

Одна из моих идей заключалась в том, чтобы искать сценарии easy_install в папке /Scripts. Я могу угадать корень Python с помощью sys.executable, а затем сменить имя исполняемого файла. Но я ищу что-то немного более элегантное (и, возможно, кросс-совместимое для ОС). Любые предложения?

Ответ 1

Это не здорово, но это сработает.

Простой скрипт Python может сделать проверку

import sys
try:
    import setuptools
except ImportError:
    sys.exit(1)
else:
    sys.exit(0)

ИЛИ ЖЕ

try:
    import setuptools
except ImportError:
    print("Not installed.")
else:
    print("Installed.")

Затем просто проверьте его код выхода в вызывающем скрипте

Ответ 2

Попробуйте выполнить эту команду.

$ pip list

Он возвращает версии как pip, так и setuptools. В противном случае попробуйте

$ pip install pil

Если это также не сработает, попробуйте с

$ which easy_install

Ответ 3

Просто запустите следующий код в IDLE:

import easy_install

Если он просто переходит к следующей строке, я думаю, что он установлен. Если он говорит:

Error: invalid syntax

Тогда он, вероятно, не установлен. Я знаю это, потому что я тестировал его. Также просто проверьте import pip, чтобы узнать, предварительно ли установлен пакет.:)

Ответ 4

Чтобы проверить, установлен ли какой-либо модуль, попробуйте

>>> import sys
>>> 'setuptools' in sys.modules.keys()
False

Ответ 5

вы можете проверить easy_install и setuptools, выполнив следующие команды командной строки:

which easy_install
#finds the path to easy_install if it exists

less path/to/easy_install
#where path/to/easy_install is the output from the above command
#this outputs your easy_install script which will mention the version of setuptools

Если пакет easy_install/setuptools установлен, ваш вывод второй команды выше, вероятно, будет читать примерно так:

#EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==0.6c11','console_scripts','easy_install'

Ответ 6

Он поставляется с предустановленными новыми версиями Python.

pip3 list

было достаточно, чтобы определить, что он установлен для меня

Ответ 7

Это покажет версию вашего setuptools, если он уже установлен

$ python -c "import sys; import setuptools; print (setuptools.version. version)"