2009-09-03 15 views
2

Dans mon projet Django, la ligne suivante génère une erreur ImportError: "Aucun module nommé elementtree".Erreur lors de l'importation d'un module python dans Django

from elementtree import ElementTree 

Cependant, le module est installé (ie, je peux courir un shell python interactif et tapez cette ligne exacte sans ImportError), et le répertoire contenant le module est sur le PYTHONPATH. Mais quand j'accède à n'importe quelle page dans un navigateur, d'une manière ou d'une autre ne peut pas trouver le module, et lance l'ImportError. Qu'est-ce qui peut causer cela?

+2

Django utilise-t-il la même version de Python que celle que vous utilisez dans le shell? –

+0

Bonne question. Comment puis-je savoir quel python django utilise? – raviv

Répondre

5

Pouvez-vous importer elementtree dans le shell django:

python manage.py shell 

En supposant que vous avez plusieurs versions de python et ne sais pas lequel est utilisé pour exécuter votre site , ajoutez ce qui suit à votre point de vue et pousser python_ver à votre modèle, il vous montrera la version Python que vous utilisez:

import sys 
python_ver = sys.version 

vous pouvez également ajouter explicitement le chemin d'accès dans votre elementtree programatically settings.py:

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

Merci! L'ajout manuel d'elementtree au chemin python avec 'sys.path.append()' a fait l'affaire. – raviv

+0

Si vous êtes juste le piratage cela fonctionnera probablement. Si cela est destiné à être un code de production, vos gars de l'AQ ne vous aimeront pas si vous piratez sys.path de cette façon. Au lieu de cela, vous voulez probablement jeter un coup d'oeil à virtualenvs, qui vous permettra d'avoir une version spécifique de django, elementtree et d'autres modules python installés sans beaucoup de possibilités de confusion. – Andrew

0

Allez dans votre répertoire d'installation

Exemple:

C:\Python26\Lib\site-packages

Et vérifier si les deux elementtree et django sont là-dedans.

S'ils ne sont pas tous les deux là, alors vous avez probablement plusieurs répertoires d'installation pour différentes versions de Python.


Dans tous les cas, vous pouvez résoudre votre problème en exécutant cette commande:

python setup.py install

Exécuter deux fois, une fois dans le téléchargement django et une fois à l'intérieur du téléchargement elementtree. Il installera les deux téléchargements dans votre python par défaut actuel.

Références:

+0

elementtree est dans mon répertoire d'installation ($ HOME/lib/python /), mais je pense avoir plusieurs répertoires d'installation (tous sur le PYTHONPATH, mais je ne sais pas si j'ai besoin de faire autre chose). J'utilise aussi un python local ('which which python' me donne $ HOME/local/bin/python, plutôt que l'habituel/usr/bin/python). – raviv

+0

ajouté quelques plus de détails sur la façon de résoudre éventuellement. –

1

Je suis également heurtés à des problèmes multi-plateforme où ElementTree était disponible à partir de différents modules sur différents systèmes ... cela a fini par travailler pour moi:

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

mai ou ne peut pas aider pour vous ...