he encontrado una manera eso funciona si estás usando django-extensions-shell_plus. Es un poco raro, pero de esta manera su archivo de inicio se carga de manera totalmente automática y no tiene que escribir ningún comando de ejecución al comienzo de su sesión ipython.
Por lo tanto, edité el archivo shells.py
desde el directorio django_extensions, que en mi caso se encuentra en /usr/local/lib/python2.7/dist-packages/django_extensions/management/shells.py
. Agregué estas líneas dentro de la función import_objects(options, style):
, por lo que importa el contenido del archivo startup.py
definido por el parámetro de entorno PYTHONSTARTUP
.
def import_objects(options, style):
# (...)
import os, sys, pkgutil
if 'PYTHONSTARTUP' in os.environ:
try:
sys.path.append(os.environ['PYTHONSTARTUP'])
import startup
content = [element for element in dir(startup) if not element.startswith('__')]
for element in content:
imported_objects[element] = getattr(startup, element)
except Exception, ex:
sys.exit("Could not import startup module content, Error:\n%s" % ex)
Ahora cuando lance shell_plus-shell, le doy la variable de entorno a mi secuencia de comandos python de inicio. Mi escritura del golpe para poner en marcha la cáscara con todo en su lugar se parece a esto:
#!/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
Ahora tienen acceso a todos los métodos y variables definidas en startup.py desde el inicio de la sesión ipython.
Para poder reutilizar eso y tener archivos de inicio personalizados para cada proyecto, precargando diferentes aspectos.
Quizás haya una manera más clara de incluir las líneas que agregué al shells.py?Pero este enfoque funciona bien para mí por ahora.
Lo mismo ocurre con 'manage.py shell', los archivos de inicio no se ejecutan. Espero que arreglen esto pronto. (ps, v 0.13) – Paolo