Puis-je utiliser `pip` au lieu de` easy_install` pour la résolution des dépendances `python setup.py install`?

137

python setup.py installinstallera automatiquement les packages répertoriés dans requires=[]using easy_install. Comment puis-je l'utiliser à la pipplace?

Joeforker
la source

Réponses:

133

Oui, vous pouvez. Vous pouvez installer un package à partir d'une archive tar ou d'un dossier, sur le Web ou sur votre ordinateur. Par exemple:

Installer à partir de l'archive tar sur le Web

pip install https://pypi.python.org/packages/source/r/requests/requests-2.3.0.tar.gz

Installer à partir de l'archive tar locale

wget https://pypi.python.org/packages/source/r/requests/requests-2.3.0.tar.gz
pip install requests-2.3.0.tar.gz

Installer à partir du dossier local

tar -zxvf requests-2.3.0.tar.gz
cd requests-2.3.0
pip install .

Vous pouvez supprimer le requests-2.3.0dossier.

Installer à partir du dossier local (mode modifiable)

pip install -e .

Cela installe le package en mode modifiable . Toutes les modifications que vous apportez au code s'appliqueront immédiatement à l'ensemble du système. Ceci est utile si vous êtes le développeur du package et que vous souhaitez tester les modifications. Cela signifie également que vous ne pouvez pas supprimer le dossier sans interrompre l'installation.

Colonel Panic
la source
10
Si vous avez l'habitude d'utiliser "python setup.py install" pour installer des packages, il est naturel de demander comment obtenir "python setup.py install" pour résoudre les dépendances avec pip, mais c'est la mauvaise question. La solution est d'installer le package avec pip et d'arrêter d'utiliser "setup.py install".
joeforker
8
Le problème @joeforker est que vous pourriez être obligé d'utiliser easy_install si vous faites quelque chose commepython setup.py test
TomDotTom
1
@TomDotTom une idée sur la façon de forcer l'utilisation de pip lors de l'exécution setup.py test, s'il vous plaît?
Jan Sila
@joeforker, pip utilise setup.pyles coulisses. Si je veux que les gens puissent installer mon package avec pip, je dois créer un setup.pyfichier.
cowlinator
Si vous voulez une preuve de cela, essayez pip install -e git+https://github.com/octocat/Hello-World.git#egg=Hello-World. L'erreur estNo such file or directory: 'c:\python\src\Hello-World\setup.py
Cowlinator
110

Vous pouvez peut pip install-être un fichier d' python setup.py sdistabord. Vous pouvez également pip install -e .ce qui est comme python setup.py develop.

Geoff Reedy
la source
14
Juste un avertissement pour ceux qui essaient ceci: Notez que cela pip install -eprend un répertoire comme argument, pas le setup.pyfichier lui-même. Au début, je n'ai pas remarqué la période pip install -e .qui m'a causé une certaine confusion :)
Markus Amalthea Magnuson
3
merci, avec pip install -e .je peux installer mais avec pip, comment puis-je désinstaller du mode modifiable?
JuanPablo
2
Les installations modifiables sont désinstallées avec une `` désinstallation de pip <nom du package> ''
joeforker
4

Si vous êtes vraiment prêt à utiliser, python setup.py installvous pouvez essayer quelque chose comme ceci:

from setuptools import setup, find_packages
from setuptools.command.install import install as InstallCommand


class Install(InstallCommand):
    """ Customized setuptools install command which uses pip. """

    def run(self, *args, **kwargs):
        import pip
        pip.main(['install', '.'])
        InstallCommand.run(self, *args, **kwargs)


setup(
    name='your_project',
    version='0.0.1a',
    cmdclass={
        'install': Install,
    },
    packages=find_packages(),
    install_requires=['simplejson']
)
TomDotTom
la source
1
Merci, mais je suis confronté à un rappel récursif en utilisant cette méthode. lorsque j'utilise 'python setup.py install', il appellera Install.run pour appeler pip install., cette fonction appellera Install. courir à nouveau ...
Lumen