Was ist der beste Weg, um ein Python-Paket und seine Abhängigkeiten von pypi für die Offline-Installation auf einem anderen Computer herunterzuladen? Gibt es eine einfache Möglichkeit, dies mit pip oder easy_install zu tun? Ich versuche, die Anforderungsbibliothek auf einer FreeBSD-Box zu installieren, die nicht mit dem Internet verbunden ist.
python
pip
freebsd
easy-install
python-requests
Chris Drantz
quelle
quelle
Antworten:
Wenn sich das Paket auf PYPI befindet, laden Sie es und seine Abhängigkeiten in ein lokales Verzeichnis herunter. Z.B
Einige Pakete müssen möglicherweise von Hand in ähnlich aussehenden Tarballs archiviert werden. Ich mache es oft, wenn ich eine neuere (weniger stabile) Version von etwas möchte. Einige Pakete sind nicht auf PYPI, daher gilt dies auch für sie.
Angenommen, Sie haben eine ordnungsgemäß geformte Python-Anwendung in
~/src/myapp
.~/src/myapp/setup.py
wird eineinstall_requires
Liste haben, die ein oder mehrere Dinge erwähnt, die Sie in Ihrem/pypi
Verzeichnis haben. Wie so:Wenn Sie Ihre App mit allen erforderlichen Abhängigkeiten ausführen möchten, während Sie sie noch hacken, gehen Sie wie folgt vor:
Auf diese Weise wird Ihre App direkt aus Ihrem Quellverzeichnis ausgeführt. Sie können Dinge hacken und dann die App erneut ausführen, ohne etwas neu zu erstellen.
Wenn Sie Ihre App und ihre Abhängigkeiten in der aktuellen Python-Umgebung installieren möchten, gehen Sie folgendermaßen vor:
In beiden Fällen schlägt der Build fehl, wenn eine oder mehrere Abhängigkeiten nicht im
/pypi
Verzeichnis vorhanden sind. Es wird nicht versucht, fehlende Dinge aus dem Internet promisku zu installieren.Ich empfehle sehr aufrufen
setup.py develop ...
undeasy_install ...
in einer aktiven virtuellen Umgebung zu vermeiden , dass Ihre globale Python - Umgebung zu kontaminieren. Es ist (virtuell) also so ziemlich der richtige Weg. Installieren Sie niemals etwas in einer globalen Python-Umgebung.Wenn der Computer, auf dem Sie Ihre App erstellt haben, dieselbe Architektur hat wie der Computer, auf dem Sie sie bereitstellen möchten, können Sie einfach das gesamte Verzeichnis der virtuellen Umgebung
easy_install
speichern, in dem Sie alles gespeichert haben. Kurz vor dem Tarballing müssen Sie das Verzeichnis der virtuellen Umgebung verschiebbar machen (siehe Option --relocatable ). HINWEIS: Auf dem Zielcomputer muss dieselbe Python-Version installiert sein, und auch alle C-basierten Abhängigkeiten, die Ihre App möglicherweise vorinstalliert hat, müssen dort ebenfalls vorinstalliert sein (z. B. wenn Sie von PIL abhängig sind , müssen libpng, libjpeg usw. vorinstalliert sein). .quelle
--allow-hosts=None
könnten Sie den Schalter benutzen--no-index
Mit dem
download
Befehl pip können Sie Pakete herunterladen, ohne sie zu installieren:pip download -r requirements.txt
(In früheren Versionen von pip wurde dies geschrieben
pip install --download -r requirements.txt
.)Anschließend können Sie
pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt
diese heruntergeladenen SD-Listen installieren, ohne auf das Netzwerk zuzugreifen.quelle
--find-links file:/path/to/some/dir/
und Sie sollten mit der gleichen Version von pip herunterladen und installieren - sonst könnte es fehlschlagenWenn Sie Python-Bibliotheken und ihre Abhängigkeiten offline installieren möchten, führen Sie die folgenden Schritte auf einem Computer aus, auf dem dasselbe Betriebssystem, Netzwerk und Python installiert sind:
1) Erstellen Sie eine
requirements.txt
Datei mit ähnlichem Inhalt (Hinweis - dies sind die Bibliotheken, die Sie herunterladen möchten):Eine Option zum Erstellen der Anforderungsdatei ist die Verwendung
pip freeze > requirements.txt
. Dadurch werden alle Bibliotheken in Ihrer Umgebung aufgelistet. Dann können Sie in gehenrequirements.txt
und nicht benötigte entfernen.2) Führen Sie den Befehl aus
mkdir wheelhouse && pip download -r requirements.txt -d wheelhouse
, um Bibliotheken und ihre Abhängigkeiten in das Verzeichnis herunterzuladenwheelhouse
3) Kopieren Sie die Anforderungen.txt in
wheelhouse
Verzeichnis4) Archiv Steuerhaus in
wheelhouse.tar.gz
mittar -zcf wheelhouse.tar.gz wheelhouse
Laden Sie dann
wheelhouse.tar.gz
auf Ihren Zielcomputer hoch:1) Ausführen
tar -zxf wheelhouse.tar.gz
, um die Dateien zu extrahieren2) Ausführen
pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouse
, um die Bibliotheken und ihre Abhängigkeiten zu installierenquelle
pip install
folge, heißt es am Ende: FEHLER: Ich konnte keine Version finden, die die Anforderungen erfüllt. "Offline-Python. Dazu benutze ich virtualenv (isolierte Python-Umgebung)
1) Installieren Sie virtualenv online mit pip:
oder offline mit whl: Gehen Sie zu diesem Link , laden Sie die letzte Version (.whl oder tar.gz) herunter und installieren Sie diese mit diesem Befehl:
durch die Verwendung müssen
--user
Sie nicht verwendensudo pip…
.2) Verwenden Sie virtualenv
Wählen Sie auf einem Online-Computer ein Verzeichnis mit Terminal aus
cd
und führen Sie diesen Code aus:Nachdem Sie alle Pakete installiert haben, müssen Sie ein
requirements.txt
Schreiben erstellen, während Ihre virtuelle Umgebung aktiv istÖffne ein neues Terminal und erstelle eine andere Umgebung wie
myenv2
.Jetzt können Sie zu Ihrem Offline-Ordner gehen, in dem sich Ihr
requirements.txt
und Ihrtranferred_packages
Ordner befinden. Laden Sie die Pakete mit folgendem Code herunter und legen Sie sie alle in einemtranferred_packages
Ordner ab.Bringen Sie Ihren Offline-Ordner auf den Offline-Computer und dann
Was ist in dem Ordner offline [Anforderungen.txt, tranferred_packages {Flask-0.10.1.tar.gz, ...}]
Checkliste Ihres Pakets
Hinweis: Da wir uns im Jahr 2017 befinden, ist es besser, Python 3 zu verwenden. Mit diesem Befehl können Sie Python 3 Virtualenv erstellen.
quelle
Laden Sie den Tarball herunter , übertragen Sie ihn auf Ihren FreeBSD-Computer und extrahieren Sie ihn. Führen
python setup.py install
Sie ihn anschließend aus und fertig!EDIT: Nur um das hinzuzufügen, können Sie die Tarballs jetzt auch mit pip installieren.
quelle
Lassen Sie mich Schritt für Schritt durch den Prozess gehen:
Öffnen Sie eine Eingabeaufforderung oder Shell und führen Sie den folgenden Befehl aus:
Angenommen, das gewünschte Paket ist
tensorflow
$ pip download tensorflow
Kopieren Sie nun auf dem Zielcomputer den
packages
Ordner und wenden Sie den folgenden Befehl anBeachten Sie, dass das
tensorflow-xyz.whl
durch den ursprünglichen Namen des erforderlichen Pakets ersetzt werden muss.quelle
Mit
wheel
kompilierte Pakete.bündeln:
Tarball kopieren und installieren:
Beachten Sie, dass
wheel
Binärpakete nicht maschinenübergreifend sind.Mehr ref. hier: https://pip.pypa.io/en/stable/user_guide/#installation-bundles
quelle
Ich hatte ein ähnliches Problem. Und ich musste es genauso installieren lassen, wie wir es von pypi aus tun.
Ich habe folgende Dinge getan:
Erstellen Sie ein Verzeichnis zum Speichern aller Pakete auf dem Computer, die über einen Internetzugang verfügen.
Laden Sie alle Pakete auf den Pfad herunter
Tarieren Sie das Paketverzeichnis und kopieren Sie es auf den Computer ohne Internetzugang. Dann mach,
Kopieren Sie die Datei packages.tar.gz auf den Zielcomputer ohne Internetzugang.
Gehen Sie auf dem Computer ohne Internetzugang wie folgt vor (Angenommen, Sie haben die geteerten Pakete auf dem aktuellen Computer nach / path / to / package / kopiert ).
und fügen Sie den folgenden Inhalt ein und speichern Sie ihn.
Schließlich schlage ich vor, dass Sie eine Form von
virtualenv
für die Installation der Pakete verwenden.Sie sollten in der Lage sein, alle Module herunterzuladen, die sich im Verzeichnis / path / to / package / befinden .
Hinweis: Ich habe dies nur getan, weil ich keine Optionen hinzufügen oder die Art und Weise ändern konnte, wie wir die Module installieren. Sonst hätte ich getan
quelle
Für Pip 8.1.2 können Sie
pip download -r requ.txt
Pakete auf Ihren lokalen Computer herunterladen.quelle