Установка пакетов из списка с помощью pip

Я пытаюсь установить список пакетов с помощью pip.

Код, который я использовал:

import pip def install(package_name): try: pip.main(['install', package_name]) except: print("Unable to install " + package_name) 

Этот код работает нормально, и если пакет недоступен, он дает ошибку:

Не найдено совпадающих распределений

Однако то, что я пытаюсь сделать, это если сбой установки (например, недопустимое имя пакета), я хочу напечатать неудавшийся пакет.

Что можно сделать для этого?

Любая помощь будет оценена, спасибо.

Попробуйте проверить возвращаемое значение для ненулевого, что указывает на ошибку, возникшую при установке. Не все ошибки инициируют исключения.

 import pip def install(package_name): try: pipcode = pip.main(['install', package_name]) if pipcode != 0: print("Unable to install " + package_name + " ; pipcode %d" % pipcode) except: print("Unable to install " + package_name) 

Вы можете проверить значение пакета, чтобы проверить, не найдено ли подходящее распределение. Обычно пакет возвращает 0, если существует кандидат на установку, иначе будет возвращен 1, поскольку ни один из кандидатов не найден

 import pip def install(package_name): package = pip.main(['install', package_name]) result = "Package successfully installed: " if package == 0 else "Unable to find package: " print(result + package_name) 

Итак, если вы попытаетесь сделать что-то вроде этого:

 >>> install("Birtualenvs") 

Вернется:

 Collecting virtualenvs Could not find a version that satisfies the requirement virtualenvs (from versions: ) No matching distribution found for virtualenvs Unable to find package: virtualenvs 

Потому что нет действительного пакета для «Birtualenvs». Но с действующим пакетом:

 >>> install("virtualenv") 

Вернется:

 Requirement already satisfied: virtualenv in/usr/lib/python2.7/dist-packages Package successfully installed: virtualenv