2013-04-07 7 views
5

私はDjango 1.5.1、Python 2.7.2、およびIPython 0.13.2を実行しています。私は私のDjangoのプロジェクトディレクトリ内から「Pythonの./manage.pyシェル」を行うと、私は次のエラーを取得する:Django 1.5とIPythonでNameErrorを取得する

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

NameError: name 'forms' is not defined. 

私はそれが「DIR(フォーム)を行うときに、私はそれを見ることができるようにフォームが定義されている知っています"このエラーは、REPL内でiPythonを実行しているときにのみ発生することに気付きました。私がREPLを起動し、古いPythonインタプリタのみを使用すると、エラーは発生しません。

誰でもこの問題が発生していますか?もしそうなら、なぜそれが起こっているか、回避策があるかどうかを知っていますか?

クラス内にメタクラスを作成し、「app_label」変数を定義するまでは、以前はREPLでクラスを作成することに問題があったと付け加えておきます。このような状況では違いはありませんでした。

ありがとうございました。

+0

あなたのプロジェクトフォルダに 'forms.py'という名前のファイルがありますか? – eandersson

+0

Djangoは正当な例外を呑み込んで、一般的な例外を再発生する習慣があります。私はコードを見て、それを修正して、実際の例外がどのようなものかを確認します。 – aychedee

+0

eandersson、いいえ、私はプロジェクトにforms.pyファイルがありませんでしたが、問題を修正しませんでした。提案していただきありがとうございます。 – William

答えて

8

django 1.5はIPythonを正しく起動しません。これはfixed in masterですが、修正は1.5.1にバックポートされませんでした。このパッチを手動でcore/management/commands/shell.pyに適用すると、IPythonは期待通りに動作するはずです。

+1

私はshell.pyを猿で修正し、問題を修正しました。どうもありがとうございました。 – William

+0

大きなありがとう!他のmonkey-patchersのためのメモ:iPythonの私のバージョンでは、少なくとも「フロントエンド」パッケージに関する非推奨警告があります。 IPython.terminal.ipappからIPython.frontend.terminal.ipappからではなくTerminalIPythonAppをインポートするTerminalIPythonAppからインポートする代わりに、IPython.terminal.ipappからTerminalIPythonAppをインポートすることで、警告を消すことができます。 –

関連する問題