Ich habe kürzlich ein Django-Projekt gestartet und schnell erkannt, dass virtualenv aus vielen Gründen wirklich nützlich sein wird. Ich habe die virtuelle Umgebung und mein Projekt eingerichtet, aber jetzt frage ich mich, welche Datei ich meiner Quellcodeverwaltung hinzufügen soll (in meinem Fall Mercurial). Soll ich alle Dateien unter dem Ordner venv hinzufügen? Wie stelle ich sicher, dass ein Kollege klonen und sofort mit der Arbeit beginnen kann, ohne die Umgebung erneut einrichten zu müssen?
python
django
mercurial
virtualenv
Martin
quelle
quelle
~/path/to/virtualenv/bin/pip freeze > ~/path/to/repo/requirements.txt
. Andere Entwickler müssen ihre eigene virtuelle Umgebung einrichten, aber es sind buchstäblich zwei Befehle -virtualenv ~/path/to/env
,~/path/to/env/bin/pip install -r ~/path/to/requirements.txt
.Antworten:
Sie generieren (normalerweise
requirements.txt
) eine "Anforderungs" -Datei , die Sie mit Ihrem Projekt festschreiben:Anschließend richtet jeder Entwickler seine eigene virtuelle Umgebung ein und führt Folgendes aus:
quelle
All diese Umgebungsprobleme treten häufig auf, wenn Sie Python / Django entwickeln! Ich habe all diese Probleme durchlaufen und einige Lösungen getestet! Dinge, die ich getestet habe:
Die beste Lösung, die ich gefunden habe, war # 4! Da die Firma, in der ich früher gearbeitet habe, hat jede Person im Team ein anderes Betriebssystem, alle Arten von Windows, Mac und Linux, und es braucht Zeit, um alle Abhängigkeiten für jede Umgebung zu installieren! Also haben wir uns entschlossen, virtualenv auszuprobieren, was wirklich gut ist! Trotzdem muss jede Person ihre eigene Umgebung einrichten. Das Problem in virtualenv ist, dass sich alle Python-Quellen in der von Ihnen erstellten Umgebung befinden! Ich würde diese Dateien also nicht an eine Quellversionskontrolle senden! Die beste Lösung war # 4, denn genau das brauchte ich. Vagrant verwendet Chef, um Ihre Umgebung einzurichten. Sie müssen also nur einige Rezepte schreiben und Vagrant sie für Sie ausführen lassen! Dann senden Sie diese Rezepte an SCM. Wenn die nächste Person die Dateien von SCM erhält und die VM neu lädt, werden alle Abhängigkeiten automatisch installiert!
Ich habe einen Blog-Beitrag, in dem mehr über das Thema erklärt wird, und ich habe ein Django Blank-Projekt in Github erstellt, damit Sie mithilfe von Vagrant einen Startpunkt für Ihr Projekt erhalten.
http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (Link nicht mehr aktiv, also mit Wayback Machine verknüpft)
BEARBEITEN
Die Lösung von Chris Pratt ist ebenfalls gut, jedoch sind einige Bibliotheken nicht so einfach in allen Betriebssystemen zu installieren. Beispielsweise haben viele Mac-Benutzer Probleme, wenn sie MySQLdb-python installieren möchten. Das ist eine wirklich verbreitete Bibliothek, aber wenn jeder in Ihrem Team Zeit damit verbringen muss, diese Probleme zu lösen, ist das überhaupt nicht gut!
quelle
MySQLdb-python
Dies ist ein guter Grund, eine vollständige Umgebung zu verwenden. Kann dies jedoch nicht auch mit pip / require.txt erreicht werden?