Posso usare `pip` invece di` easy_install` per la risoluzione delle dipendenze di `python setup.py install`?


137

python setup.py installinstallerà automaticamente i pacchetti elencati in requires=[]usando easy_install. Come posso ottenerlo pipinvece?

Risposte:


133

Si, puoi. Puoi installare un pacchetto da un tarball o una cartella, sul web o sul tuo computer. Per esempio:

Installa da tarball sul web

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

Installa da tarball locale

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

Installa dalla cartella locale

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

È possibile eliminare la requests-2.3.0cartella.

Installa dalla cartella locale (modalità modificabile)

pip install -e .

Questo installa il pacchetto in modalità modificabile . Qualsiasi modifica apportata al codice verrà immediatamente applicata in tutto il sistema. Ciò è utile se si è lo sviluppatore del pacchetto e si desidera verificare le modifiche. Significa anche che non è possibile eliminare la cartella senza interrompere l'installazione.


10
Se sei abituato a usare "python setup.py install" per installare i pacchetti, è naturale chiedere come ottenere "python setup.py install" per risolvere le dipendenze con pip, ma è una domanda sbagliata. La soluzione è installare il pacchetto con pip e smettere di usare "install.py install".
Joeforker,

8
Il problema @joeforker è che potresti essere costretto a usare easy_install se fai qualcosa del generepython setup.py test
TomDotTom

1
Hai qualche idea su come forzare l'uso di pip durante l'esecuzione setup.py test, per favore?
Jan Sila,

@joeforker, pip usa setup.pydietro le quinte. Se voglio che le persone siano in grado di installare il mio pacchetto con pip, devo creare un setup.pyfile.
cowlinator,

Se vuoi provare questo, prova pip install -e git+https://github.com/octocat/Hello-World.git#egg=Hello-World. L'errore èNo such file or directory: 'c:\python\src\Hello-World\setup.py
cowlinator

110

È possibile pip installun file forse python setup.py sdistprima. Puoi anche pip install -e .che è come python setup.py develop.


14
Solo un avvertimento per chiunque stia provando questo: nota che pip install -eaccetta una directory come argomento, non il setup.pyfile stesso. All'inizio non ho notato il periodo in pip install -e .cui mi ha causato confusione :)
Markus Amalthea Magnuson

3
grazie, con pip install -e .posso installare ma con pip, come posso disinstallare dalla modalità modificabile?
Juan Pablo,

2
Le installazioni modificabili vengono disinstallate con una normale 'pip uninstall <nome pacchetto>'
joeforker

4

Se sei davvero pronto per l'uso, python setup.py installpotresti provare qualcosa del genere:

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']
)

1
Grazie, ma sto affrontando il callback ricorsivo usando questo metodo. quando sto usando 'python setup.py install', chiamerà Install.run per chiamare pip install., questa funzione chiamerà Install. corri di nuovo ...
Lumen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.