2013-04-07 15 views
5

Używam Django 1.5.1, Python 2.7.2 i IPython 0.13.2. Jeśli mam zrobić „python shell ./manage.py” od wewnątrz mojego katalogu projektu Django, pojawia się następujący błąd:Pobieranie NameError z Django 1.5 i IPython

from django import forms 
class CommentForm(forms.Form): 
    name = forms.CharField() 

NameError: name 'forms' is not defined. 

wiem formy jest zdefiniowany jako widzę, kiedy to zrobić „dir (formularze) ". Zauważyłem, że ten błąd występuje tylko wtedy, gdy używam iPython w REPL. Jeśli uruchomię REPL i użyję tylko zwykłego, starego interpretera Pythona, błąd nie wystąpi.

Czy ktoś jeszcze napotkał ten problem? Jeśli tak, to czy wiesz, dlaczego tak się dzieje i czy istnieje jakieś obejście?

Powinienem dodać, że miałem problemy z tworzeniem klas w REPL, dopóki nie utworzyłem klasy meta w klasie i nie zdefiniowałem zmiennej "app_label". To nie miało znaczenia w tej sytuacji.

Dzięki.

+0

Czy masz jakiś plik o nazwie 'forms.py' przez przypadek w folderze projektu? – eandersson

+0

Django ma zwyczaj połykania uzasadnionych wyjątków i ponownej zbiórki leków generycznych. Chciałbym rzucić okiem na kod, a nawet go zmodyfikować, aby zobaczyć, jaki może być faktyczny wyjątek. – aychedee

+0

eandersson, Nie, nie miałem pliku forms.py w projekcie, ale dodanie go nie rozwiązało problemu. Dzieki za sugestie. – William

Odpowiedz

8

django 1.5 nie uruchamia poprawnie IPython. To jest fixed in master, ale poprawka nie została przeniesiona do wersji 1.5.1. Jeśli ręcznie zastosujesz tę poprawkę do core/management/commands/shell.py, IPython powinien działać zgodnie z oczekiwaniami.

+1

Naprawiłem problem z małpią poprawką shell.py. Dziękuję Ci bardzo. – William

+0

Wielkie dzięki za to! Jedna uwaga dla innych instalatorów małp: W mojej wersji iPythona otrzymałem ostrzeżenie o wycofaniu w pakiecie "frontend". Możesz usunąć to ostrzeżenie, usuwając warstwę "frontend": z pliku IPython.terminal.ipapp importuj TerminalIPythonApp zamiast z pliku IPython.frontmin.terminal.ipapp import TerminalIPythonApp –