Ich habe gerade angefangen mit Setuptools und Virtualenv zu arbeiten. Mein Paket erfordert den neuesten Python-Gearman, der nur bei GitHub erhältlich ist. Die Python-Gearman-Version von PyPI ist alt. Die Github-Quelle ist setuptools-kompatibel, dh hat setup.py usw. Gibt es eine Möglichkeit, setuptools zum Herunterladen und Installieren der neuen Version zu veranlassen, 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
python
setuptools
distutils
pypi
andrei
quelle
quelle
python setup.py install
im Quellverzeichnis zu verwenden?easy_install
oderpip
installieren. Es gibt aber auch eine andere Lösung. Haben Sie darüber nachgedacht, das Paket zu PyPI hinzuzufügen?buildout
? Es hat ein paar vorgefertigte Git-Plugins.Antworten:
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 allein funktioniert jedoch nicht, da easy_install nicht 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 stattdessen , kann easy_install den Paketnamen und seine Version identifizieren.
Der letzte Schritt besteht darin, die URL zu den dependency_links Ihres Pakets hinzuzufügen, z.
Wenn IHR Paket installiert wird, stellt easy_install fest, dass unter dieser URL ein "gearman 2.0.0beta" zum Herunterladen verfügbar ist, und wählt ihn gerne über dem auf PyPI aus, wenn Sie "gearman> = 2.0.0beta" angeben. in Ihren Abhängigkeiten ..
(Normalerweise wird auf diese Weise ein Link auf der PyPI-Seite zur herunterladbaren Quelle eingefügt. In diesem Fall wären Sie bereits festgelegt, wenn der Autor des Gearman-Pakets einen Link wie den oben genannten eingefügt hätte Normalerweise markieren Benutzer die Entwicklungsversion mit 'myproject-dev' und verwenden dann die Anforderung 'myproject> = somever, == dev', sodass easy_install dies versucht, wenn es kein Paket von somever oder höher gibt Schauen Sie sich die Version an oder laden Sie sie herunter.)
Sie müssen angeben,
--process-dependency-links
wenn Sie verwendenpip
. Beachten Sie, dass die Verarbeitung von Abhängigkeitsverknüpfungen veraltet ist und in einer zukünftigen Version entfernt wird.quelle
beta
Suffix einer vorhandenen Version auf PyPI wird das Paket weiterhin von PyPI anstelle des in definierten Pakets installiertdependency_links
. Wenn Sie versuchen, eine höhere Version als die auf PyPI vorhandene festzulegen#egg=package-version
, beschwert sich das Setup-Tool mit einemCould not find a version that satisfies the requirement
Fehler und einer Liste aller auf PyPI verfügbaren Versionen. Beachten Sie, dass ich versuche, mein Paket mit zu erstellensdist
und es dann mit zu installierenpip install http://url/to/my/generated/tar
.easy_install http://url/to/my/generated/tar
funktioniert alles wie erwartet ... Irgendeine Idee warum?--process-dependency-links
wurde abpip
19 entfernt! Siehe: github.com/pypa/pip/issues/6162Sie können das
pip install protocol+location[@tag][#egg=Dependency]
Format verwenden, um mit pip direkt von der Quelle zu installieren.Git
Mercurial
SVN
Bzr
Folgende Protokolle werden unterstützt:
[+git, +svn, +hg, +bzr]
Versionen
@tag
Mit dieser Option können Sie eine bestimmte Version / ein bestimmtes Tag zum Auschecken angeben.#egg=name
Hier können Sie angeben, was das Projekt als Abhängigkeit für andere ist.Die Reihenfolge muss immer sein
@tag#egg=name
.Private Repositories
Sie können auch aus privaten Repositorys installieren, indem Sie das Protokoll in SSH (
ssh://
) ändern und einen geeigneten Benutzer (git@
) hinzufügen :Sie können auch von privaten Repositorys mit einem Benutzernamen / Passwort installieren.
Github bietet die Möglichkeit, persönliche OAuth-Token zu erstellen, die mit dem Fahrrad gefahren werden können
Anforderungen.txt
requirements.txt
wird verwendet, um Projektabhängigkeiten anzugeben:Anforderungen.txt
Diese werden nicht automatisch mit dem Paket installiert und müssen mit dem Befehl installiert werden
pip -r requirements.txt
.Einschließlich Anforderungsdateien
Anforderungsdateien können andere Anforderungsdateien enthalten:
Anforderungen-docs.txt
Anforderungen-dev.txt
Anforderungen.txt
setup.py
Anforderungsdateien können Abhängigkeiten installieren, die
setup.py
mit dem folgenden Befehl angegeben wurden:setup.py
kann auch aus Repositorys mit derselben Syntax wie oben installiert werden, jedoch mit demdependency_links
in dieser Antwort genannten Wert .Verweise:
https://pip.pypa.io/en/latest/user_guide.html#installing-packages https://pip.pypa.io/en/latest/reference/pip_install.html
quelle
extras_require={'all': [repo @ git+https://github.com/username/repo.git]}
Da musste ich einfach das gleiche tun, fand ich eine andere Möglichkeit , dies zu tun , wie
pip
‚s--process-dependency-links
geplant sind entfernt wirdpip
nach 19,0 diesen Kommentar .pip
18.1 enthält die folgende FunktionAus der Beschreibung von PEP 508 geht hervor, dass die Syntax für solche URL-Abhängigkeiten wie folgt aussieht:
Also in deinem
setup.py
würde es so aussehenBeachten Sie, dass der Link eine Archivdatei ist und auch eine bestimmte Version oder ein Zweig eines Repositorys sein kann, wie in dieser Antwort beschrieben . Siehe auch diese Antwort für die Arbeit mit anderen Repository-Hosts.
Nach meinem besten Wissen können Sie die Abhängigkeit am einfachsten aktualisieren,
pip install -I .
indem Sie Ihr Paket aus seinem Verzeichnis installieren.quelle
pip install
unterstützt wird, wie z. B. Git-URLs#subdirectory=...
usw.? Oder haben sie eine brandneue Syntax entwickelt, bei der verschiedene Funktionen auf unterschiedliche und inkompatible Weise angezeigt werden?distutils.core.setup
undpip 19.1.1
requirements.txt
ist jedoch nicht kompatibel mitpip install -r requirments.txt
requirments.txt
beziehen Sie sich?Vanilla
setuptools
unterstützt das Herunterladen nicht direkt aus einem Git-Repository. Sie können jedoch einen der Download Source- Links von dieser Seite verwenden, z.quelle
pip
oderbuildout
die mehr anspruchsvolle Anforderungsmanagement. Siehe zum Beispiel: pip.openplans.org/#requirements-files