fand ich einen Weg das funktioniert, wenn Sie django-extensions-shell_plus verwenden. Es ist ein wenig hacky, aber auf diese Weise wird Ihre Startup-Datei vollautomatisch geladen und Sie müssen zu Beginn Ihrer ipython-Session keinen run-Befehl eingeben.
Daher habe ich die Datei shells.py
aus dem django_extensions dir bearbeitet, die in meinem Fall in /usr/local/lib/python2.7/dist-packages/django_extensions/management/shells.py
befindet. Ich fügte diese Zeilen innerhalb der Funktion import_objects(options, style):
hinzu, so dass es den Inhalt der Datei startup.py
importiert, die durch den Umgebungsparameter PYTHONSTARTUP
definiert wurde.
Jetzt, wenn ich die shell_plus-Shell starte, gebe ich die Umgebungsvariable zu meinem Start-Python-Skript. Meine Bash-Skript, das Shell mit alles an seinem Platz zu starten, sieht wie folgt aus:
#!/bin/bash
export PYTHONSTARTUP=/home/ifischer/src/myproject/startup.py # tells shell_plus to load this file
python /home/ifischer/src/myproject/manage.py shell_plus --ipython
Jetzt habe ich Zugriff auf alle Methoden und Variablen definiert in startup.py von Anfang an der ipython Sitzung.
So können Sie das wiederverwenden und benutzerdefinierte Startup-Dateien für jedes Projekt haben, die verschiedene Aspekte vorladen.
Vielleicht gibt es eine sauberere Möglichkeit, die Zeilen, die ich in die Shells.py eingefügt habe, einzubeziehen.Aber dieser Ansatz funktioniert für mich im Moment gut.
Das gleiche passiert mit 'manage.py shell', Startup-Dateien werden nicht ausgeführt. Hoffentlich werden sie das bald beheben. (ps, v 0.13) – Paolo