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
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.
Sie können das Format pip install protocol+location[@tag][#Egg=Dependency]
Verwenden, um mit pip direkt von der Quelle zu installieren.
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
pip install hg+https://hg.myproject.org/MyProject/
pip install svn+svn://svn.myproject.org/svn/MyProject
pip install bzr+http://bzr.myproject.org/MyProject/trunk
Die folgenden Protokolle werden unterstützt: [+git, +svn, +hg, +bzr]
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.
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
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.
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
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
.
https://pip.pypa.io/en/latest/user_guide.html#installing-packageshttps://pip.pypa.io/en/latest/reference/pip_install. html
Da ich nur das Gleiche tun musste, habe ich eine andere Möglichkeit gefunden, dies zu tun, da geplant ist, dass pip
s --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.
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