2009-09-03 19 views
2

Djangoプロジェクトでは、次の行でImportError: "moduletreeという名前のモジュールがありません"というエラーがスローされます。DjangoでPythonモジュールをインポート中にエラーが発生しました

from elementtree import ElementTree 

しかし、モジュールは(すなわち、Iは、インタラクティブPythonシェルを実行し、任意のはImportErrorなく、その正確な行を入力することができる)がインストールされ、そしてモジュールを含むディレクトリは、PYTHONPATHにあります。しかし、ブラウザのページにアクセスすると、何らかの形でモジュールが見つからず、ImportErrorがスローされます。これを引き起こす原因は何ですか?

+2

Djangoは、シェルで使用しているのと同じPythonバージョンを使用していますか? –

+0

良い質問です。どのようにPythonのdjangoが使用しているかを知るにはどうすればよいですか? – raviv

答えて

5

は、あなたがDjangoのシェル内elementtreeをインポートすることができます...あなたのために役に立たないことがありますが、複数のPythonのバージョンを持っているし、あなたのサイトを実行するために使用されている1かわからないと仮定すると、

python manage.py shell 

import sys 
python_ver = sys.version 

をあなたはまた、明示的にプログラム的にElementTreeのためにパスを追加することができます、あなたのビューに以下を追加し、テンプレートにpython_verを押して、それはあなたが使用しているPythonのバージョンが表示されます210:

import sys 
sys.path.append('path to where elementtree resides') 
+1

ありがとう!手動で 'sys.path.append()'でpythonのパスにelementtreeを追加するのはやりました。 – raviv

+0

もしあなたがハッキングしているのなら、これはおそらくうまくいくでしょう。これがプロダクションコードであることを意図している場合、このようにsys.pathをハックすれば、QAの人はあなたが気に入らないでしょう。その代わりに、virtualenvを見てみましょう。これは、django、elementtree、および他のPythonモジュールの特定のバージョンを、混乱の余地なくインストールします。 – Andrew

0

インストールディレクトリに移動します

例:

C:\Python26\Lib\site-packages

とのElementTreeとDjangoの両方が存在しているかどうかを確認します。

これらが両方とも存在しない場合は、おそらく異なるバージョンのPython用に複数のインストールディレクトリがあります。いずれの場合においても


、このコマンドを実行して、問題を解決することができます:

python setup.py install

を実行して二回、一回ジャンゴのダウンロード内側と一回のElementTreeのダウンロード内部。現在のデフォルトのPythonがあれば、両方のダウンロードをインストールします。

参考文献:

+0

elementtreeは私のインストールディレクトリ($ HOME/lib/python /)にありますが、複数のインストールディレクトリ(PYTHONPATHにありますが、それ以上のことをする必要があるかどうかは分かりません)があります。私はローカルPython( '' python'は普通の/ usr/bin/pythonではなく$ HOME/local/bin/pythonを提供しています)も使用しています。 – raviv

+0

に修正方法の詳細が追加されました。 –

1

また、私はこれが働くことになった...のElementTreeは異なるシステム上の異なるモジュールから入手した、クロスプラットフォームの問題に遭遇しました私にとって:

try: 
    import elementtree.ElementTree as ET 
except: 
    import xml.etree.ElementTree as ET 

月または

関連する問題