Ne pip poignée extras_requires de setuptools/distribuer les sources?
J'ai package "A" avec un setup.py et un extras_requires en ligne, comme:
extras_require = {
'ssh': ['paramiko'],
},
Et d'un package "B" qui dépend util:
install_requires = ['A[ssh]']
Si je lance python setup.py install
sur le paquet B, qui utilise setuptools.command.easy_install
sous le capot, le extras_requires
est correctement résolu, et paramiko est installé.
Cependant, si je lance pip /path/to/B
ou pip hxxp://.../b-version.tar.gz
, Un package est installé, mais paramiko ne l'est pas.
Parce que pip "s'installe à partir de la source", je ne suis pas tout à fait sûr de savoir pourquoi cela ne fonctionne pas. Il devrait être de l'invocation de la setup.py de B, alors la résolution & l'installation de dépendances à la fois B et A.
Est-ce possible avec le pip?
- Mise à jour de votre pip
pip install -U pip
et puispip install ".[test]"
devez installer nomméextra_require
section
Vous devez vous connecter pour publier un commentaire.
C'est suppported depuis pip 1.1, qui a été publié en février 2012 (un an après cette question a été posée).
pip install packagename[extra1,extra2]==2.1
comme décrit dans l'exemple 6 ici et en ce post.Nous utilisons
setup.py
etpip
pour gérer les dépendances de développement pour nos forfaits, si vous avez besoin d'une version plus récente depip
(nous utilisons 1.4.1 actuellement).Installer le paquet:
À développer:
pip install .[develop]
(sans le-e
) ne fonctionne pas, et vous avez besoin d'utiliser un éditable à l'installation si vous souhaitez installer les extras de.
.pip install -e .[develop]
, ne pip install gevent et de Tissu? Et où est-ce comportement documenté?gevent
,flask
,Fabric
, etnose
. Pip utilise en internesetuptools
pour leur système de construction pip.pypa.io/en/latest/reference/pip/....extras_require
est une option danssetuptools
pour l'installation des 'extras' pythonhosted.org/setuptools/...La réponse de @aaronfay est tout à fait correct, mais il peut être agréable de souligner que si vous utilisez
zsh
que la commande d'installationpip install -e .[dev]
doit être remplacé parpip install -e ".[dev]"
.