web-dev-qa-db-de.com

Wie kann ich setuptools dazu bringen, ein Paket zu installieren, das nicht auf PyPI läuft?

Ich habe gerade angefangen, mit setuptools und virtualenv zu arbeiten. Für mein Paket ist der neueste Python-Gearman erforderlich, der nur bei GitHub erhältlich ist. Die Python-Gearman-Version von PyPI ist alt. Die Github-Quelle ist setuptools-kompatibel, d. H. Hat setup.py usw. Gibt es eine Möglichkeit, die neue Version von setuptools herunterzuladen und zu installieren, anstatt sie auf PyPI zu suchen und die alte zu installieren?

Zu Ihrer Information, der neue Python-Gearman ist http://github.com/mtai/python-gearman

136
andrei

Der Schlüssel ist, easy_install mitzuteilen, wo das Paket heruntergeladen werden kann. In diesem speziellen Fall finden Sie es unter der URL http://github.com/mtai/python-gearman/tarball/master . Dieser Link an sich wird jedoch nicht funktionieren, da easy_install nicht einfach anhand der URL erkennen kann, was er erhalten wird.

Durch Ändern in http://github.com/mtai/python-gearman/tarball/master#Egg=gearman-2.0.0beta kann easy_install stattdessen den Paketnamen und seine Version identifizieren .

Der letzte Schritt ist das Hinzufügen der URL zu den Dependency_Links Ihres Pakets, z.

setup(
   ...
   dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#Egg=gearman-2.0.0beta']
)

Jetzt, wenn IHR Paket installiert wird, wird easy_install feststellen, dass ein "gearman 2.0.0beta" zum Herunterladen von dieser URL verfügbar ist. Wenn Sie "gearman> = 2.0.0beta" angeben, wählen Sie ihn glücklich über den auf PyPI aus. in deinen Abhängigkeiten ..

(Normalerweise wird auf der PyPI-Seite ein Link zu der herunterladbaren Quelle eingefügt. Wenn der Autor des Gearman-Pakets einen Link wie den oben genannten eingefügt hätte, wären Sie bereits festgelegt In der Regel wird die Entwicklungsversion mit 'myproject-dev' markiert und anschließend die Anforderung 'myproject> = irgendwann, == dev' verwendet, sodass easy_install dies versucht, wenn es kein Paket von irgendetwas oder höher gibt check out oder downloade die Version.)

Sie müssen --process-dependency-links Angeben, wenn Sie pip verwenden. Beachten Sie, dass die Verarbeitung von Abhängigkeitsverknüpfungen veraltet ist und in einer zukünftigen Version entfernt wird.

153
PJ Eby

Sie können das Format pip install protocol+location[@tag][#Egg=Dependency] Verwenden, um mit pip direkt von der Quelle zu installieren.

Git

pip install git+https://github.com/username/repo.git
pip install git+https://github.com/username/[email protected]
pip install git+https://github.com/username/[email protected]#Egg=ProjectName

Mercurial

pip install hg+https://hg.myproject.org/MyProject/

SVN

pip install svn+svn://svn.myproject.org/svn/MyProject

Bzr

pip install bzr+http://bzr.myproject.org/MyProject/trunk

Die folgenden Protokolle werden unterstützt: [+git, +svn, +hg, +bzr]

Versionen

Mit @tag Können Sie eine bestimmte Version/ein bestimmtes Tag zum Auschecken angeben.

Mit #Egg=name Können Sie angeben, was das Projekt als Abhängigkeit für andere darstellt.

Die Bestellung muss immer @tag#Egg=name Lauten.

Private Repositories

Sie können auch von privaten Repositorys installieren, indem Sie das Protokoll in SSH ändern (ssh://) Und einen entsprechenden Benutzer hinzufügen ([email protected]):

git+ssh://[email protected]/username/my_private_repo

Sie können auch von privaten Repositorys mit einem Benutzernamen/Passwort installieren.

git+https://<username>:<password>@github.com/<user>/<repo>.git

Github bietet die Möglichkeit, persönliche OAuth Token zu erstellen, die mit dem Fahrrad gefahren werden können

git+https://<oauth token>:[email protected]/<user>/<repo>.git

requirements.txt

requirements.txt Wird verwendet, um Projektabhängigkeiten anzugeben:

requirements.txt

package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git

Diese werden nicht automatisch mit dem Paket installiert und müssen mit dem Befehl pip -r requirements.txt Installiert werden.

Einschließlich Anforderungsdateien

Anforderungsdateien können andere Anforderungsdateien enthalten:

requirements-docs.txt

sphinx
-r requirements-dev.txt

requirements-Dev.txt

some-dev-tool
-r requirements.txt

requirements.txt

package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git

setup.py

Anforderungsdateien können die in setup.py Angegebenen Abhängigkeiten mit dem folgenden Befehl installieren:

-e .

setup.py Kann auch von Repositorys aus mit der gleichen Syntax wie oben installiert werden, jedoch mit dem unter diese Antwort angegebenen Wert dependency_links.

Verweise:

https://pip.pypa.io/en/latest/user_guide.html#installing-packageshttps://pip.pypa.io/en/latest/reference/pip_install. html

63
Rebs

Da ich nur das Gleiche tun musste, habe ich eine andere Möglichkeit gefunden, dies zu tun, da geplant ist, dass pips --process-dependency-links In pip 19.0 gemäß this) entfernt werden Kommentar .

pip 18.1 enthält die folgende Funktion

Zulassen, dass die URL-Anforderungen von PEP 508 als Abhängigkeiten verwendet werden.

Ab der Beschreibung von PEP 508 sieht die Syntax für solche URL-Abhängigkeiten folgendermaßen aus:

Eine minimale URL-basierte Suche:

pip @ https://github.com/pypa/pip/archive/1.3.1.Zip#sha1=da9234ee9982d4bbb3c72346a6de940a148ea686

Also in deinem setup.py Würde es so aussehen

setup(
   ...
   install_requires = [
   ...
   'python-gearman @ https://github.com/mtai/python-gearman/archive/master.Zip'
   ...
   ]
)

Beachten Sie, dass der Link eine Archivdatei ist und auch eine bestimmte Version oder ein bestimmter Zweig eines Repositorys sein kann, wie beschrieben in dieser Antwort . Lesen Sie diese Antwort auch, wenn Sie mit anderen Repository-Hosts arbeiten.

Meines Wissens ist die einfachste Möglichkeit, die Abhängigkeit zu aktualisieren, die Verwendung von pip install -I ., Wenn Sie Ihr Paket aus seinem Verzeichnis installieren.

15
Phil

Vanilla setuptools unterstützt das Herunterladen direkt aus einem Git-Repository nicht, Sie können jedoch einen der Download-Quelle -Links von dieser Seite verwenden, z.

easy_install http://github.com/mtai/python-gearman/tarball/master
6
Ned Deily