IPython 0.13.1 をインストールしたところ、2 つの問題が発生しています。「アプリ」と呼ばれるアプリケーションを含む小さな「デモ」プロジェクトがあります。
.
├── app
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ └── views.py
├── demo
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ └── wsgi.py
└── manage.py
models.py には以下が含まれます。
from django.db import models
class Customer(models.Model):
fname = models.CharField(max_length=25)
最初の問題は、変更を加えた後に models.py ファイルを再読み込みすることです。IPython を開いて Customer クラスをインポートし、モデル モジュールをリロードしようとすると、次のエラーが発生します。
In [1]: from app.models import Customer
In [2]: reload(app.models)
--------------------------------------------------
NameError Traceback(most recent call last)
/Users/me/dotfiles/.virtualenvs/demo/lib/.../shell.pyc in <module>()
----> 1 reload(app.models)
NameError: name 'app' is not defined
私はPythonを初めて使用しますが、「モデル」がモジュールであり、INSTALLED_APPS設定にあると信じています。reload(app) と reload(models) も試しましたが、成功しませんでした。私は何を間違っていますか?
私の 2 番目の問題は、autoreload の使用です。ドキュメントページを読んだ後、次のように有効にしました。
In [1]: %load_ext autoreload
In [2]: %autoreload 2
ここで、ドキュメントに示されているように、関数を含むテスト ファイル 'foo.py' を作成すると、その関数に加えた変更が IPython に反映されます。しかし、(上記のように) Customer クラスをインポートし、それに 2 番目のフィールド "lname" を追加してファイルを保存すると、その変更は IPython に反映されません。コマンド「Customer??」を実行しても、変更は表示されません。また、aimport コマンドを実行すると、次のように表示されます。
In [5]: %load_ext autoreload
In [6]: %autoreload 2
In [7]: %aimport
Modules to reload:
all-except-skipped
Modules to skip:
私は何を間違っていますか?これはここで議論されている AppCache の問題ですか? 示されているスクリプトを実装しようとしましたが、実行するとエラーがスローされます。ありがとう。