¿Puedo usar `pip` en lugar de` easy_install` para la resolución de dependencia de `python setup.py install`?

137

python setup.py installinstalará automáticamente los paquetes que figuran en el requires=[]uso easy_install. ¿Cómo hago para que lo use pip?

joeforker
fuente

Respuestas:

133

Sí tu puedes. Puede instalar un paquete desde un tarball o una carpeta, en la web o en su computadora. Por ejemplo:

Instalar desde tarball en la web

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

Instalar desde tarball local

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

Instalar desde la carpeta local

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

Puedes borrar el requests-2.3.0 carpeta.

Instalar desde la carpeta local (modo editable)

pip install -e .

Esto instala el paquete en modo editable . Cualquier cambio que realice en el código se aplicará inmediatamente en todo el sistema. Esto es útil si usted es el desarrollador del paquete y desea probar los cambios. También significa que no puede eliminar la carpeta sin interrumpir la instalación.

Coronel Panic
fuente
10
Si está acostumbrado a usar "python setup.py install" para instalar paquetes, es natural preguntar cómo obtener "python setup.py install" para resolver dependencias con pip, pero es la pregunta incorrecta. La solución es instalar el paquete con pip y dejar de usar "setup.py install".
joeforker
8
El problema @joeforker es que podría verse obligado a usar easy_install si hace algo comopython setup.py test
TomDotTom
1
@TomDotTom alguna idea sobre cómo forzar el uso de pip cuando se ejecuta setup.py test, por favor?
Jan Sila
@joeforker, pip usa setup.pydetrás de escena. Si quiero que las personas puedan instalar mi paquete con pip, necesito crear un setup.pyarchivo.
cowlinator
Si quieres una prueba de esto, inténtalo pip install -e git+https://github.com/octocat/Hello-World.git#egg=Hello-World. El error esNo such file or directory: 'c:\python\src\Hello-World\setup.py
cowlinator
110

Puede hacer pip installun archivo quizás por python setup.py sdistprimera vez. También puedes lo pip install -e .que es como python setup.py develop.

Geoff Reedy
fuente
14
Solo un aviso para cualquiera que intente esto: pip install -etenga en cuenta que toma un directorio como argumento, no el setup.pyarchivo en sí. Al principio no noté el período en el pip install -e .que me causó cierta confusión :)
Markus Amalthea Magnuson
3
gracias, con pip install -e .puedo instalar pero con pip, ¿cómo puedo desinstalar del modo editable?
JuanPablo
2
Las instalaciones editables se desinstalan con una 'desinstalación de pip' <nombre del paquete> '
regular
4

Si realmente está decidido a usar python setup.py install, puede intentar algo como esto:

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
fuente
1
Gracias, pero estoy enfrentando una devolución de llamada recursiva con este método. cuando estoy usando 'python setup.py install', llamará a Install.run para llamar a pip install., esta función llamará a Install. corre de nuevo ...
Lumen