Pipenv: Laufräder mit Pipenv bauen?

Erstellt am 7. März 2018  ·  3Kommentare  ·  Quelle: pypa/pipenv

Ich möchte in der Lage sein, Räder für alle Abhängigkeiten in einem Pipfile.lock zu generieren und dabei die Vorteile der Hash-Überprüfung zu nutzen. Vor 11.1.2 konnten Sie dies erreichen mit:

pipenv lock -r > reqs.txt
pip wheel -r reqs.txt

_(#1417 war für diesen Workflow problematisch, aber ansonsten hat es funktioniert)_

In 11.1.2 wurden Hashes aus der Ausgabe im Anforderungsstil entfernt, was (afaik) bedeutet, dass es keine Möglichkeit gibt, Hash-verifizierte Räder aus einer Sperrdatei zu erstellen/herunterzuladen.

Der Anwendungsfall besteht darin, Python-Module für Offline-Installationen oder Installationen ohne Kompilierungs-/Entwicklungstools auf dem Server zu verpacken. Die Räder können in einer minimalen Python-Umgebung gebaut, dann verteilt und installiert werden.


Würden Sie diese Funktionalität in das Projekt aufnehmen? Wenn nicht, gibt es eine Möglichkeit, diesen Workflow wieder zu unterstützen?

Hilfreichster Kommentar

Nur für den Fall, dass hier jemand nach einer Lösung sucht, es ist ziemlich einfach (vorausgesetzt, die Interna von pipenv ändern sich nicht):

from pipenv.utils import convert_deps_to_pip
with open('Pipfile.lock') as f:
    deps = json.load(f)['default']
# remove local project which wouldn't have a hash
for k, v in list(deps.items()):
    if v.get('path') == '.':
        del(deps[k])
path_to_requirements_file_with_hashes = convert_deps_to_pip(deps)

Alle 3 Kommentare

keine Pläne für dies zu diesem Zeitpunkt

das klingt jedoch nach einer großartigen Gelegenheit für ein pipenv-wheels -Tool.

Nur für den Fall, dass hier jemand nach einer Lösung sucht, es ist ziemlich einfach (vorausgesetzt, die Interna von pipenv ändern sich nicht):

from pipenv.utils import convert_deps_to_pip
with open('Pipfile.lock') as f:
    deps = json.load(f)['default']
# remove local project which wouldn't have a hash
for k, v in list(deps.items()):
    if v.get('path') == '.':
        del(deps[k])
path_to_requirements_file_with_hashes = convert_deps_to_pip(deps)
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen