webentwicklung-frage-antwort-db.com.de

Wie exportiere ich virtualenv?

Ich bin neu bei Virtualenv, schreibe aber eine Django-App und muss sie schließlich irgendwie bereitstellen.

Nehmen wir an, meine App arbeitet auf meiner lokalen Virtualenv, auf der ich alle erforderlichen Bibliotheken installiert habe. Was ich jetzt tun möchte, ist, ein Skript auszuführen, das meine virtualenv benötigt, um zu überprüfen, was darin installiert ist, und ein Skript zu erstellen, das alle diese Bibliotheken in frischer virtualenv auf einer anderen Maschine installiert. Wie kann das gemacht werden? Bitte helfen.

27
mnowotka

Du kopierst nicht und fügst deine virtualenv ein. Sie exportieren die Liste aller installierten Pakete wie - 

pip freeze > requirements.txt

Dann schieben Sie die requirements.txt-Datei an eine beliebige Stelle, an der Sie den Code bereitstellen möchten, und tun Sie dann einfach das, was Sie auf dem Dev-Rechner getan haben. 

$ virtualenv <env_name>
$ source <env_name>/bin/activate
(<env_name>)$ pip install -r path/to/requirements.txt

Und dort haben Sie alle Ihre Pakete mit der genauen Version installiert.

Sie können auch in Fabric nachsehen, um diese Aufgabe mit einer Funktion wie dieser zu automatisieren. 

def pip_install():
    with cd(env.path):
        with prefix('source venv/bin/activate'):
            run('pip install -r requirements.txt')
63
Bibhas Debnath

Wenn es sich auf demselben Pfad befindet, können Sie es tarieren und auf einem anderen Computer extrahieren. Wenn alle gleichen Abhängigkeiten, Bibliotheken usw. auf dem Zielcomputer verfügbar sind, funktioniert es.

Sie können virtualenvwrapper installieren und versuchen, cpvirtualenv auszuführen. Die Entwickler raten jedoch zur Vorsicht hier:

Warnung

Das Kopieren von virtuellen Umgebungen wird nicht gut unterstützt. Jede virtuelle enthält Pfadinformationen, die fest codiert sind, und es kann Fälle geben, in denen Der Kopiercode weiß nicht, dass er eine bestimmte Datei aktualisieren muss. Benutzen mit Vorsicht.

Ich habe das noch nicht genug getestet, aber ich werde hier ein Update machen, nachdem ich weiß, wie gut (oder schlecht) dies funktioniert.

0
Shon Feder