Kann ich `pip` anstelle von` easy_install` für die Abhängigkeitsauflösung von` python setup.py install` verwenden?

137

python setup.py installinstalliert automatisch die in requires=[]using aufgelisteten Pakete easy_install. Wie kann ich es pipstattdessen verwenden?

Joeforker
quelle

Antworten:

133

Ja, du kannst. Sie können ein Paket von einem Tarball oder einem Ordner im Web oder auf Ihrem Computer installieren. Beispielsweise:

Installieren Sie von Tarball im Web

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

Installieren Sie vom lokalen Tarball

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

Installation aus lokalem Ordner

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

Sie können den requests-2.3.0Ordner löschen .

Installation aus lokalem Ordner (bearbeitbarer Modus)

pip install -e .

Dadurch wird das Paket im bearbeitbaren Modus installiert . Alle Änderungen, die Sie am Code vornehmen, werden sofort systemweit angewendet. Dies ist nützlich, wenn Sie der Paketentwickler sind und Änderungen testen möchten. Dies bedeutet auch, dass Sie den Ordner nicht löschen können, ohne die Installation zu unterbrechen.

Oberst Panik
quelle
10
Wenn Sie es gewohnt sind, "python setup.py install" zum Installieren von Paketen zu verwenden, fragen Sie natürlich, wie Sie "python setup.py install" zum Auflösen von Abhängigkeiten mit pip erhalten, aber es ist die falsche Frage. Die Lösung besteht darin, das Paket mit pip zu installieren und die Verwendung von "setup.py install" zu beenden.
Joeforker
8
Das Problem @joeforker ist, dass Sie möglicherweise gezwungen sind, easy_install zu verwenden, wenn Sie etwas tun wiepython setup.py test
TomDotTom
1
@TomDotTom eine Idee, wie man die Verwendung von Pip beim Laufen erzwingt setup.py test, bitte?
Jan Sila
@ Joeforker, Pip verwendet setup.pyhinter den Kulissen. Wenn ich möchte, dass Benutzer mein Paket mit pip installieren können, muss ich eine setup.pyDatei erstellen .
Cowlinator
Wenn Sie dies beweisen möchten, versuchen Sie es pip install -e git+https://github.com/octocat/Hello-World.git#egg=Hello-World. Der Fehler istNo such file or directory: 'c:\python\src\Hello-World\setup.py
Cowlinator
110

Sie können pip installeine Datei vielleicht python setup.py sdistzuerst. Sie können auch pip install -e .was ist python setup.py develop.

Geoff Reedy
quelle
14
Nur ein Hinweis für jeden, der dies versucht: Beachten Sie, dass pip install -eein Verzeichnis als Argument verwendet wird, nicht die setup.pyDatei selbst. Zuerst bemerkte ich nicht die Zeit, in pip install -e .der ich etwas Verwirrung stiftete :)
Markus Amalthea Magnuson
3
danke, mit pip install -e .kann ich aber mit pip installieren, wie kann ich aus dem bearbeitbaren Modus deinstallieren?
JuanPablo
2
Bearbeitbare Installationen werden mit einer regulären 'Pip-Deinstallation <Paketname>' deinstalliert
Joeforker
4

Wenn Sie wirklich darauf eingestellt sind, können python setup.py installSie Folgendes ausprobieren:

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
quelle
1
Vielen Dank, aber ich stehe vor einem rekursiven Rückruf mit dieser Methode. Wenn ich 'python setup.py install' verwende, wird Install.run aufgerufen, um pip install aufzurufen. Diese Funktion ruft Install auf. wieder laufen ...
Ziggy