Не проходя с установкой, я хочу быстро увидеть все пакеты, которые установит pip install
.Есть ли способ перечислить зависимости/требования?
ответ
Ближайшие вы можете получить с пипом непосредственно является использованием --no-install
аргумента:
pip install --no-install <package>
Например, это выход при установке сельдерея:
Downloading/unpacking celery
Downloading celery-2.5.5.tar.gz (945Kb): 945Kb downloaded
Running setup.py egg_info for package celery
no previously-included directories found matching 'tests/*.pyc'
no previously-included directories found matching 'docs/*.pyc'
no previously-included directories found matching 'contrib/*.pyc'
no previously-included directories found matching 'celery/*.pyc'
no previously-included directories found matching 'examples/*.pyc'
no previously-included directories found matching 'bin/*.pyc'
no previously-included directories found matching 'docs/.build'
no previously-included directories found matching 'docs/graffles'
no previously-included directories found matching '.tox/*'
Downloading/unpacking anyjson>=0.3.1 (from celery)
Downloading anyjson-0.3.3.tar.gz
Running setup.py egg_info for package anyjson
Downloading/unpacking kombu>=2.1.8,<2.2.0 (from celery)
Downloading kombu-2.1.8.tar.gz (273Kb): 273Kb downloaded
Running setup.py egg_info for package kombu
Downloading/unpacking python-dateutil>=1.5,<2.0 (from celery)
Downloading python-dateutil-1.5.tar.gz (233Kb): 233Kb downloaded
Running setup.py egg_info for package python-dateutil
Downloading/unpacking amqplib>=1.0 (from kombu>=2.1.8,<2.2.0->celery)
Downloading amqplib-1.0.2.tgz (58Kb): 58Kb downloaded
Running setup.py egg_info for package amqplib
Successfully downloaded celery anyjson kombu python-dateutil amqplib
Правда, это оставить некоторое крутится вокруг в виде временных файлов, но он достигает цели. Если вы делаете это с помощью virtualenv (каким вы должны быть), очистка будет такой же простой, как удаление каталога <virtualenv root>/build
.
Причина этого в том, что метаданные не существуют вне setup.py, так что в отличие от сказать «rpm» или «dpkg», где вы строите индекс метаданных сверху и запрашиваете, что 'pip' и' pypi' не работа так. Поэтому мы должны передать каждое требование. –
Спасибо @paul, ваш комментарий делает ответ полным – lastoneisbearfood
Я пробовал 'pip --no-install celery', но я получаю ошибку' no такой вариант: --no-install' (pip 1.2.1) –
Если и только если пакет установлен, вы можете использовать pip show <package>
. Найдите Requires:
, поданный в конце вывода. Ясно, что это нарушает ваше требование, но может быть полезным, тем не менее.
Например:
$ pip --version
pip 7.1.0 [...]
$ pip show pytest
---
Metadata-Version: 2.0
Name: pytest
Version: 2.7.2
Summary: pytest: simple powerful testing with Python
Home-page: http://pytest.org
Author: Holger Krekel, Benjamin Peterson, Ronny Pfannschmidt, Floris Bruynooghe and others
Author-email: holger at merlinux.eu
License: MIT license
Location: /home/usr/.tox/develop/lib/python2.7/site-packages
Requires: py
Команда pip install <package> --download <path>
следует использовать, как указано в комментариях по @radtek, так как от 7.0.0 (2015-05-21), --no-установки является removed от pip
. Это загрузит зависимости, необходимые в <path>
.
Смешно, ** '--download' тоже устарел. ** Каноническая команда _now_, похоже, 'pip загрузить
Принимаемый ответ больше не относится к более актуальным версиям пипса и не дает немедленного ответа без просмотра нескольких комментариев, поэтому я предоставляю обновленный ответ.
Это было протестировано с версией пп 8.1.2 и 9.0.1.
Чтобы получить выход без загромождения текущего каталога на Linux использует
pip download [package] -d /tmp --no-binary :all:
-d
говорит пип каталога, скачать следует поместить файлы.
Лучше просто использовать этот сценарий с аргументом является имя пакета для получения только зависимостей в качестве выходных:
#!/bin/sh
PACKAGE=$1
pip download $PACKAGE -d /tmp --no-binary :all: \
| grep Collecting \
| cut -d' ' -f2 \
| grep -v $PACKAGE
Также имеется here.
** Это замечательно и должно быть принятым ответом. ** Честно говоря, интерфейс 'pip' по умолчанию ужасен и продолжает деградировать с каждым передающим фиксацией. Возможность перечисления зависимостей пакетов _without_ загрузочного пакета cruft должна быть базовой функциональностью. Поскольку это не так, ваш заключительный сценарий оболочки Bourne является следующим лучшим. ' Shakes_head>' –
Другой вариант заключается в использовании вспомогательный скрипт, подобный this one, который использует pip.req.parse_requirements
API для разбора файлов requirements.txt
и замену distutils.core.setup
для разбора setup.py
файлов.
В случае, если у вас уже установлены пакеты, этот скрипт может извлечь все зависимости из файла требований, выполнив команду pip show
, указанную @Sardathrion.
import commands
fil = open("requirements.txt")
for package_line in fil.readlines():
if "==" in package_line:
package = package_line.split("==")[0]
elif "[" in package_line:
package = package_line.split("[")[0]
else:
package = package_line
output = commands.getoutput('pip show %s' % package)
try:
required = output.split("\n")[-1].split(":")[1]
except Exception as e:
required = ""
print "error {} in package {}".format(e, package)
if len(required) > 1:
print package, "-- ****%s***" % required
- 1. есть ли способ перечислить спокойные веб-сервисы
- 2. Есть ли способ перечислить серверы PostgreSQL?
- 3. Есть ли способ перечислить коллекции с монгоскин?
- 4. Есть ли способ перечислить сигналы Django?
- 5. Есть ли способ перечислить свойства каталога индексирования?
- 6. Есть ли способ перечислить все препроцессоры C?
- 7. Есть ли способ перечислить подсказки редактора NetBeans?
- 8. Есть ли способ перечислить репозитории git в терминале?
- 9. ocaml: utop, есть ли способ перечислить все функции модуля?
- 10. Есть ли способ перечислить все swizzled методы в приложении iOS?
- 11. Есть ли предпочтительный способ перечислить sagadata в веб-приложении?
- 12. Есть ли лучший способ перечислить значения enum, чем Enum.GetValues ()?
- 13. Есть ли способ перечислить видеоустройства на телефоне Java ME?
- 14. Есть ли способ перечислить зависимости задач в Gradle?
- 15. Amazon SimpleDB - Есть ли способ перечислить все атрибуты в домене?
- 16. Есть ли способ условно перечислить имена полей в форме доступа?
- 17. Есть ли способ перечислить все запущенные контейнеры докеров по имени?
- 18. Цель C: Есть ли способ перечислить свойства в коде?
- 19. Есть ли способ перечислить все текущие запущенные процессы в C
- 20. Есть ли способ перечислить все зависимости градиента программно?
- 21. Есть ли способ перечислить очереди в rabbitmq через pika?
- 22. Есть ли способ перечислить * только * Свойства узла в Neo4j Shell?
- 23. Есть ли способ перечислить открытые окна на Mac и X11?
- 24. Есть ли способ перечислить классы в пакете javadoc?
- 25. Есть ли способ перечислить доступные переменные в шаблоне Ruby ERB?
- 26. Есть ли способ перечислить все классы в проекте Intellij?
- 27. Есть ли способ перечислить, что `npm publish` действительно опубликует?
- 28. Есть ли способ перечислить все подключения к socketserver в Python3?
- 29. Есть ли способ перечислить дополнительные свойства в sparql?
- 30. Есть ли способ перечислить все статические функции в классе?
Связанные: http://stackoverflow.com/q/9232568/183791 – dusan
Может быть [желток] (https://github.com/cakebread/yolk) может помочь? – jadkik94
желток выглядит как крутой инструмент. Спасибо, что дали мне знать. – lastoneisbearfood