I just installed IPython 0.13.1 and am having two problems. I have a small 'demo' project that contains an application called 'app':
.
├── 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 contains:
from django.db import models
class Customer(models.Model):
fname = models.CharField(max_length=25)
My first problem is reloading the models.py file after I make a change. If I open IPython, import my Customer class, and try to reload the models module, I get this error:
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
While I'm new to Python, I do believe that 'models' is the module, and I it is in my INSTALLED_APPS settings. I also tried reload(app) and reload(models) with no success. What am I doing wrong?
My second problem is in using autoreload. After reading the doc page, I enabled it like this:
In [1]: %load_ext autoreload
In [2]: %autoreload 2
Now if I create a test file 'foo.py' with some function in it as the documentation illustrates, any changes I make to that function are reflected in IPython. But if I import my Customer class (as shown above) and add a second field "lname" to it and save the file, that change isn't reflected in IPython. If I run the command, "Customer??", the change doesn't show up. Also, if I run the aimport command, I see this:
In [5]: %load_ext autoreload
In [6]: %autoreload 2
In [7]: %aimport
Modules to reload:
all-except-skipped
Modules to skip:
What am I doing wrong? Is this the AppCache issue discussed here? I tried implementing the script shown but it throws errors when I run it. Thanks.