Migrieren von virtualenv und Github zwischen Computern

8

Ich arbeite in diesen Tagen hauptsächlich mit Python 2.7 und Django 1.3.3 (gehostet auf Heroku) und ich habe mehrere Projekte, die ich pflege. Ich habe an einem Desktop mit Ubuntu gearbeitet, der in einer VirtualBox läuft, musste aber kürzlich eine Reise machen und wollte alles auf mein Notebook laden. Aber was ich schnell herausfand, war, dass virtualenv + Github sehr einfach ist, um Projekte zu erstellen, aber ich hatte Mühe, sie auf mein Notebook zu übertragen. Der Ansatz, den ich mir vorgenommen habe, war, neue virtualenv zu erstellen und dann den Code von github zu klonen. Aber ich konnte es nicht in dem Ordner machen, den ich wirklich wollte, denn es würde sagen, dass der Ordner nicht leer ist. Also, ich würde es in einen tmp-Ordner klonen, als sie das alles in das, wo ich es wirklich wollte, schneiden / einfügen. Nicht schrecklich, aber ich fühle mich, als würde ich hier etwas vermissen und es sollte einfacher sein. Vielleicht klonen zuerst, dann mkvirtualenv?

Das ist kein Problem, aber ich denke darüber nach, noch einige Änderungen vorzunehmen (wie zB die VirtualBox und nur ein Dual-Boot-System) und es wäre großartig, wenn ich es etwas ruhiger machen könnte. :)

Schließlich habe ich ein paar Posts über das Verschieben von Git-Repos zwischen Computern gefunden und gelesen, aber ich habe mit Virtualenv keinen Kontakt gesehen (vielleicht habe ich es gerade verpasst).

EDIT: Nur um klar zu sein und Verwirrung zu vermeiden, versuche ich nicht, den virtualenv zu "bewegen". Ich spreche nur über den besten Weg, um einen neuen zu erstellen. Installieren Sie die Pakete und klonen Sie dann den Repo von github.

    
David S 13.09.2012, 15:47
quelle

4 Antworten

14

Der einzige Workflow, den Sie benötigen, ist:

%Vor%

Dies setzt voraus, dass Sie pip freeze > requirements.txt ausgeführt haben (während das venv aktiviert ist), um alle von virtualenv-pip installierten Bibliotheken aufzulisten, und sie in das Repo eingecheckt hat.

    
matt b 13.09.2012 15:57
quelle
9

Das liegt daran, dass Sie virtualenvs nicht an verschiedene Orte auf einem System verschieben sollten (es gibt Unterstützung für die Verlagerung, aber es ist experimentell), geschweige denn von einem System zum anderen. Erstelle ein neues virtualenv:

  • Installiere virtualenv auf dem anderen System
  • Holen Sie sich requirements.txt , indem Sie entweder einen schreiben oder die Ausgabe von pip freeze speichern (und die Ausgabe bearbeiten)
  • Verschieben Sie die requirements.txt auf das andere System, erstellen Sie ein neues virtualenv und installieren Sie die Bibliotheken über pip install -r requirements.txt .
  • Klonen Sie das Git-Repository auf dem anderen System

Für erweiterte Anforderungen können Sie ein Bootstrapping-Skript erstellen, das den benutzerdefinierten Code von virtualenv + enthält, um alles andere einzurichten.

EDIT: Die Wurzel des virtualenv und der Wurzel Ihres Repositories im selben Verzeichnis zu haben, scheint mir eine ziemlich schlechte Idee zu sein. Versetzen Sie das Repository in ein Verzeichnis innerhalb des virtuellen Stammverzeichnisses oder fügen Sie es in vollständig separate Bäume ein. Nicht nur Sie vermeiden git (zu Recht - normalerweise ist alles, was nicht von git verfolgt wird faires Spiel zu löschen) beschwert sich über vorhandene Dateien, Sie können auch die virtualenv für mehrere Repositories verwenden und Namenskollisionen zu vermeiden.

    
delnan 13.09.2012 15:54
quelle
3

Zusätzlich zum Scripting, das ein neues virtualenv erstellt, sollten Sie eine requirements.txt-Datei erstellen, die all Ihre Abhängigkeiten hat (zB Django1.3), dann können Sie pip install -r requirements.txt ausführen und dies wird alle Ihre Abhängigkeiten für Sie installieren .

Sie können sogar pip das für Sie erstellen, indem Sie pip freeze > stable-req.txt ausführen, was Ihnen Abhängigkeiten ausgibt, wie es in Ihrem aktuellen virtualenv der Fall ist. Sie können dann die requirements.txt unter Versionskontrolle halten.

    
Ctrlspc 13.09.2012 15:54
quelle
1

Das Schöne an einem virtualenv ist, dass Sie beschreiben können, wie man einen erstellt, und Sie können es wiederholt auf mehreren Plattformen machen.

Also, statt das ganze Ding zu klonen, klonen Sie eine Methode, um den virtualenv konsistent zu erstellen, und haben Sie das in Ihrem git-Repository. Auf diese Weise vermeiden Sie plattformspezifische Schädlichkeiten.

    
Ali Afshar 13.09.2012 15:51
quelle

Tags und Links