2012-11-09 9 views
5

Ich habe ein paar Projekte, die ähnliche Abhängigkeiten erfordern, und ich möchte nicht PIP ausgehen und DLing die Abhängigkeiten aus dem Web jedes Mal. Zum Beispiel verwende ich das norel-django-Paket, das mit meinem Standard-Django (rdbms-Version) kollidieren würde, wenn ich es systemweit installiere.Replizieren virtualenv, ohne alle Pakete erneut auf dem gleichen Rechner

Gibt es eine Möglichkeit für mich, die heruntergeladenen Abhängigkeiten mit Pip wiederzuverwenden? Muss ich die Quell-tar.bz2-Dateien erstellen und eine Ordnerstruktur erstellen, die der eines Pip-Archivs oder etwas ähnlich ist? Jede Hilfe wäre willkommen.

Dank

Antwort

6

Fügen Sie die folgenden $HOME/.pip/pip.conf:

[global] 
download_cache = ~/.pip/cache 

Dies sagt Pip Cache-Downloads in ~/.pip/cache so wird es nicht gehen müssen und sie beim nächsten Mal wieder herunterladen.

+0

Was macht das eigentlich? –

+0

Es teilt Pip mit, die Downloads in '~/.pip/cache' zu ​​cachen, damit es beim nächsten Mal nicht wieder heruntergeladen werden muss. Entschuldigung für die knappe Antwort; es scheint mir irgendwie selbsterklärend zu sein (aber dann habe ich vielleicht noch nicht genug Kaffee getrunken). –

+0

Eigentlich sieht eine schnelle Google-Suche so aus, als ob das was ich brauche. –

0

es wie virtualenv aussieht hat einen virtualenv-clone Befehl, oder vielleicht virtualenvwrapper tut?

Egal, sieht es ein wenig komplizierter als nur copyin und Einfügen von virtuellen Umgebung Verzeichnisse zu sein:

https://github.com/edwardgeorge/virtualenv-clone

zusätzlich scheint es virtualenv eine Flagge hat, die in bewegten Ihre virtualenv erleichtern.

http://www.virtualenv.org/en/latest/#making-environments-relocatable

$ virtualenv --relocatable ENV von virtualenv doc:

Dies wird einige der Dateien, die von Setuptools erstellt machen oder Verwendung relative Pfade verteilen, und alle Skripte ändern activate_this.py stattdessen zu verwenden Verwenden der Position des Python Interpreters zur Auswahl der Umgebung.

Hinweis: Sie müssen dies ausführen, nachdem Sie alle Pakete in der -Umgebung installiert haben. Wenn Sie eine Umgebung verlagerbar machen und dann ein neues Paket installieren, müssen Sie virtualenv --relocatable erneut ausführen.

Auch das macht Ihre Pakete nicht plattformübergreifend. Sie können das Verzeichnis um verschieben, aber es kann nur auf anderen ähnlichen Computern verwendet werden. Einige bekannte Umgebungsunterschiede, die Inkompatibilitäten verursachen können: eine andere Version von Python, wenn eine Plattform UCS2 für seine interne Unicode-Darstellung verwendet und eine andere UCS4 (eine Kompilierzeitoption) verwendet, offensichtliche Plattformänderungen wie Windows vs. Linux, oder Intel vs. ARM, und wenn Sie Bibliotheken haben, die an C Bibliotheken auf dem System binden, wenn diese C-Bibliotheken sich irgendwo befinden (verschiedene Versionen oder ein anderes Dateisystem Layout).

Wenn Sie dieses Flag zum Erstellen einer Umgebung verwenden, wird derzeit die Option --System-Site-Pakete impliziert.

+0

Ich muss den Site-Packages-Ordner nicht so viel verschieben, als nur ein Duplikat dessen, was dort installiert ist, in meinem neuen vent zu haben. Ich weiß, dass ich einen Pip Freeze machen und in mein neues Venv importieren könnte, aber das erfordert immer noch, dass ich im Internet gehe, was für etwas wie eine Dev-Box aussieht, als könnte es mühsam und langsam sein, da ich weiß, dass ich die Pakete schon habe die Maschine irgendwo. –

+0

@ PaulJ.Warner, ich habe versucht, einige Vorschläge zu geben, wie Sie Ihre virtualenv klonen können, so dass Pakete nicht neu installiert werden würden. – dm03514

Verwandte Themen