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.