*.whl Datei über `requirements.txt` oder `pyproject.toml` von Github laden und installieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Dennis89
User
Beiträge: 1720
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo zusammen,

ich habe nun recht große Freude daran, ein Projekt, das fertig/benutzbar ist, als *.whl zu speichern und zu installieren.
Wenn ich die *.whl-Datei lokal habe, dann funktioniert das wunderbar. Wenn ich das nun teilen will, dann muss die Person das von Hand aus meinem Repo herunterladen oder ich muss es bei `PyPi` hochladen. Option zwei würde ich machen, wenn es ein ernsthaftes Projekt wäre. Irgendwelchen "Quatsch" will ich da eigentlich nicht hoch laden.

Im Netz habe ich nur die Möglichkeit gefunden, dass ich in den Dateien das Repo angeben kann und `pip` installiert dass dann, wenn da eine `setup.py` Datei vorhanden ist.
Wenn ich sowas in die `requirements.txt` schreibe

Code: Alles auswählen

test @ https://github.com/Dennis-89/.../dist/*.whl
Dann wird die *.whl Datei heruntergeladen, allerdings meldet `pip` mir, dass die Datei invalid wäre. Ich vermute, dass der die entpackt. Denn wenn ich statt der *.whl eine *.tar.gz Datei zum herunterladen angebe, meldet er mir, dass das keine `gzip`-Datei sei.

Kurz gesagt, ich suche eine Möglichkeit, wie den schön verpackten Code verteilen kann und wenn ich Änderungen vornehme, das auf dem Zielsystem mit `pip install * -U` oder ähnlichem sehr einfach eingespielt/geupdatet wird.

Danke und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Sirius3
User
Beiträge: 18387
Registriert: Sonntag 21. Oktober 2012, 17:20

*.whl ist doch keine gültige URL. Laut Dokumentationsbeispiel gibt man wheels ohne Package-Namen an: https://pip.pypa.io/en/stable/reference ... le-format/ letzte Zeile. Weil der Packagename ja schon im Dateinamen kodiert ist.
Wenn Du eine Datei tar.gz nennst, die aber gar keine gzip-Datei ist, ist ja logisch, dass das nicht funktioniert.
Benutzeravatar
Dennis89
User
Beiträge: 1720
Registriert: Freitag 11. Dezember 2020, 15:13

Danke für die Antwort.

Ich habe nun verschiedenstes aus der Doku versucht und es endet immer im gleichen Fehler. Wenn ich die Datei aber manuell runterlade und dann mit pip und Pfadangabe installiere, dann funktioniert es.
Mal ohne `requirements.txt` habe ich dieses Beispiel aus der Doku versucht (Hier ist der Packagename wieder mit angegeben, ohne kommt allerdings das Gleiche Ergebnis. Ich habe mich einfach durch die Beispiele durchprobiert):

Code: Alles auswählen

(venv) [dennis@dennis Bla]$ pip install 'gasproperties@https://github.com/Dennis-89/CoolProp/blob/main/CustomGas/dist/gasproperties-0.1.0-py3-none-any.whl'
Collecting gasproperties @ https://github.com/Dennis-89/CoolProp/blob/main/CustomGas/dist/gasproperties-0.1.0-py3-none-any.whl
  Downloading https://github.com/Dennis-89/CoolProp/blob/main/CustomGas/dist/gasproperties-0.1.0-py3-none-any.whl
     | 223.8 kB 1.4 MB/s 0:00:00
ERROR: Wheel 'gasproperties' located at /tmp/pip-unpack-6i76jppz/gasproperties-0.1.0-py3-none-any.whl is invalid.
Ich würde ja an der *.whl Datei zweifeln, aber dann könnte ich sie nicht manuell installieren. Das angegebene tmp-Verzeichnis, wird vermutlich nach der Fehlerausgabe gelöscht:

Code: Alles auswählen

(venv) [dennis@dennis Bla]$ ls /tmp/ | grep pip*
(venv) [dennis@dennis Bla]$ 
Grüße
Dennis

Edit: Auch wenn ich auf Github den "perma Link" verwende, ist das Ergebnis das gleiche. Das wäre dieser hier:
https://github.com/Dennis-89/CoolProp/b ... ne-any.whl
"When I got the music, I got a place to go" [Rancid, 1993]
Sirius3
User
Beiträge: 18387
Registriert: Sonntag 21. Oktober 2012, 17:20

Dein Link zeigt auf eine HTML-Seite. Du willst den raw-Link verwenden: https://github.com/Dennis-89/CoolProp/r ... ne-any.whl

Was Du aber eigentlich machen willst, ist ein Release erstellen: https://github.com/Dennis-89/CoolProp/releases/new
Weil fertige Pakete gehören eigentlich nicht ins git.
Antworten