django-extensions-shell_plus を使用している場合に機能する方法を見つけました。少しハックですが、この方法では起動ファイルが完全に自動的にロードされ、ipython セッションの開始時に実行コマンドを入力する必要がありません。
したがってshells.py
、私は django_extensions dir からファイルを編集しました。私の場合は/usr/local/lib/python2.7/dist-packages/django_extensions/management/shells.py
. 関数内にこれらの行を追加したため、環境パラメーターによって定義されたimport_objects(options, style):
ファイルの内容がインポートされます。startup.py
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)
ここで、shell_plus-shell を起動するときに、スタートアップ Python スクリプトに環境変数を渡します。すべてが整った状態でシェルを起動する私の bash スクリプトは次のようになります。
#!/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
これで、ipython セッションの最初から startup.py で定義されたすべてのメソッドと変数にアクセスできるようになりました。
したがって、それを再利用して、さまざまな側面をプリロードして、すべてのプロジェクトにカスタム スタートアップ ファイルを作成できます。
shells.py に追加した行をどこに含めるか、より明確な方法があるのではないでしょうか? しかし、このアプローチは今のところ私にとってはうまくいきます。