Sans passer par l'installation, je veux voir rapidement tous les packages qui pip install
s'installeraient.
Sans passer par l'installation, je veux voir rapidement tous les packages qui pip install
s'installeraient.
Réponses:
La réponse acceptée n'est plus pertinente pour les versions plus actuelles de pip et ne donne pas de réponse immédiate sans lire plusieurs commentaires, je fournis donc une réponse mise à jour.
Cela a été testé avec les versions de pip 8.1.2 , 9.0.1 , 10.0.1 et 18.1 .
Pour obtenir la sortie sans encombrer votre répertoire actuel sous Linux, utilisez
pip download [package] -d /tmp --no-binary :all: -v
-d
indique à pip le répertoire dans lequel le téléchargement doit placer les fichiers.
Mieux, utilisez simplement ce script avec l'argument étant le nom du package pour obtenir uniquement les dépendances en sortie:
#!/bin/sh
PACKAGE=$1
pip download $PACKAGE -d /tmp --no-binary :all:-v 2>&1 \
| grep Collecting \
| cut -d' ' -f2 \
| grep -Ev "$PACKAGE(~|=|\!|>|<|$)"
Aussi disponible ici .
requirements.txt
utilisation de ceci:< requirements.txt egrep -v "^#" | egrep -v "^$" | xargs -L 1 -I % sh -c 'echo %; echo "======"; ./deps.sh %; echo "";
--no-binary :all:
n'est donc pas une bonne idée. Un projet qui ne livrait que wheel et non sdist échouerait.
Découvrez mon projet johnnydep !
Installation:
pip install johnnydep
Exemple d'utilisation:
$ johnnydep requests
name summary
------------------------- ----------------------------------------------------------------------
requests Python HTTP for Humans.
├── certifi>=2017.4.17 Python package for providing Mozilla's CA Bundle.
├── chardet<3.1.0,>=3.0.2 Universal encoding detector for Python 2 and 3
├── idna<2.7,>=2.5 Internationalized Domain Names in Applications (IDNA)
└── urllib3<1.23,>=1.21.1 HTTP library with thread-safe connection pooling, file post, and more.
Un arbre plus complexe:
$ johnnydep ipython
name summary
-------------------------------- -----------------------------------------------------------------------------
ipython IPython: Productive Interactive Computing
├── appnope Disable App Nap on OS X 10.9
├── decorator Better living through Python with decorators
├── jedi>=0.10 An autocompletion tool for Python that can be used for text editors.
│ └── parso==0.1.1 A Python Parser
├── pexpect Pexpect allows easy control of interactive console applications.
│ └── ptyprocess>=0.5 Run a subprocess in a pseudo terminal
├── pickleshare Tiny 'shelve'-like database with concurrency support
├── prompt-toolkit<2.0.0,>=1.0.4 Library for building powerful interactive command lines in Python
│ ├── six>=1.9.0 Python 2 and 3 compatibility utilities
│ └── wcwidth Measures number of Terminal column cells of wide-character codes
├── pygments Pygments is a syntax highlighting package written in Python.
├── setuptools>=18.5 Easily download, build, install, upgrade, and uninstall Python packages
├── simplegeneric>0.8 Simple generic functions (similar to Python's own len(), pickle.dump(), etc.)
└── traitlets>=4.2 Traitlets Python config system
├── decorator Better living through Python with decorators
├── ipython-genutils Vestigial utilities from IPython
└── six Python 2 and 3 compatibility utilities
johnnydep
installe les dépendances.
Si et seulement si le package est installé, vous pouvez utiliser pip show <package>
. Recherchez le Requires:
fichier à la fin de la sortie. De toute évidence, cela brise votre exigence, mais peut néanmoins être utile.
Par exemple:
$ 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
Remarque: la fonctionnalité utilisée dans cette réponse est obsolète en 2014 et supprimée en 2015 . Veuillez consulter les autres réponses qui s'appliquent à moderne
pip
.
Le plus proche que vous pouvez obtenir directement avec pip est d'utiliser l' --no-install
argument:
pip install --no-install <package>
Par exemple, voici le résultat lors de l'installation du céleri:
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
Certes, cela laisse une certaine cruauté sous la forme de fichiers temporaires, mais cela atteint l'objectif. Si vous faites cela avec virtualenv (ce que vous devriez être), le nettoyage est aussi simple que de supprimer le <virtualenv root>/build
répertoire.
rpm
ou dpkg
où vous créez un index de métadonnées sur le dessus et l'interrogez pip
et pypi
ne fonctionne pas de cette façon. Nous devons donc ignorer chaque exigence.
pip --no-install celery
mais je reçois l'erreur no such option: --no-install
(pip 1.2.1)
pip install --no-install celery
--no-install
indicateur est obsolète.
La commande pip install <package> --download <path>
doit être utilisée, comme mentionné dans les commentaires de @radtek, car à partir de la version 7.0.0 (21/05/2015), --no-install est supprimé de pip
. Cela téléchargera les dépendances nécessaires dans <path>
.
--download
a également été obsolète. La commande canonique semble maintenant être pip download <package> -d /tmp --no-binary :all:
celle suggérée par The Card Cheat .
Une autre option consiste à utiliser un script d'assistance similaire à celui-ci qui utilise l' pip.req.parse_requirements
API pour analyser les requirements.txt
fichiers et un distutils.core.setup
remplacement pour analyser les setup.py
fichiers.
Je cite une solution alternative de @onnovalkering :
PyPi fournit un point de terminaison JSON avec des métadonnées de package:
>>> import requests >>> url = 'https://pypi.org/pypi/{}/json' >>> json = requests.get(url.format('pandas')).json() >>> json['info']['requires_dist'] ['numpy (>=1.9.0)', 'pytz (>=2011k)', 'python-dateutil (>=2.5.0)'] >>> json['info']['requires_python'] '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*'
Pour une version de package spécifique, ajoutez un segment de version supplémentaire à l'URL:
https://pypi.org/pypi/pandas/0.22.0/json
De plus, si vous utilisez conda ( comme suggéré par @ShpielMeister ), vous pouvez utiliser:
conda info package==X.X.X
pour afficher des informations, y compris les dépendances d'une version particulière ou:
conda info package
pour afficher des informations, y compris les dépendances sur toutes les versions prises en charge de ce package.
boto3
, le requires_dist est nul mais c'est un projet qui a certainement des dépendances dans les métadonnées .