2010-06-18 23 views
9

Estoy ejecutando Python 2.5.4 en Windows y sigo recibiendo un error cuando intento importar los módulos ElementTree o cElementTree. El código es muy simple (estoy siguiendo un tutorial):Python 2.5.4 - ImportError: Ningún módulo llamado etree.ElementTree

import xml.etree.ElementTree as xml 

root = xml.Element('root') 
child = xml.Element('child') 
root.append(child) 
child.attrib['name'] = "Charlie" 
file = open("test.xml", 'w') 
xml.ElementTree(root).write(file) 
file.close() 

me sale el mensaje de error cuando lo ejecuto desde el cmd o no, pero cuando trato directamente desde el intérprete de Python.

Traceback (most recent call last): 
File "C:\xml.py", line 31, in <module> 
    import xml.etree.ElementTree as xml 
File "C:\xml.py", line 31, in <module> 
    import xml.etree.ElementTree as xml 
ImportError: No module named etree.ElementTree 

Además, he comprobado y el módulo está allí en C: \ Python25 \ Lib \ xml \ etree

+0

No aparece el mensaje de error en su asunto al ejecutar el código que publicó. Obtendrás ese mensaje de 'import etree.ElementTree'. Cuando solicite ayuda, copie/pegue su código y el mensaje de seguimiento y error, no escriba desde la memoria. –

+0

Ha cambiado el código que se muestra pero aún no genera el mensaje de error en el asunto de la pregunta. De hecho, parece que funciona. Además de usar "archivo" como nombre de variable, se ve bien. ¿Todavía tienes un problema? ¿Entonces qué? De lo contrario, debiste haber editado tu pregunta para que reflejara cuál era el problema original. –

+0

Si el intérprete funciona, y cmd no, ¿es posible que tenga una versión anterior de python ejecutándose desde cmd? – wisty

Respuesta

7

Se perdió la línea muy importante en el tutorial

import xml.etree.ElementTree as xml 

Esto hace xml .etree.ElementTree ahora conocido como xml en todo el módulo.

Resulta que tengo Python 2.5.4 y he verificado que el mismo código que tiene encima funciona:

[email protected] test$ cat test.py 
import xml.etree.ElementTree as xml 

root = xml.Element('root') 
child = xml.Element('child') 
root.append(child) 
child.attrib['name'] = "Charlie" 
file = open("test.xml", 'w') 
xml.ElementTree(root).write(file) 
file.close() 

[email protected] test$ /usr/bin/python2.5 --version 
Python 2.5.4 
[email protected] test$ /usr/bin/python2.5 test.py 
[email protected] test$ cat test.xml 
<root><child name="Charlie" /></root>[email protected] test$ 

a fin de comprobar y asegurarse de que se está ejecutando Python 2.5.4 y si usted es tratar reinstalando. El problema no es que sea Python 2.5.4 o tu código. Es un problema de instalación, estás ejecutando una versión diferente de Python, o hay algún otro problema extraño.

+0

Gracias :) Eso es un error tipográfico ... pero incluso entonces no reconoce el módulo ... – Jen

+0

@Jen: Publique el código real que ejecutó, el rastreo y el mensaje de error. "no reconoce el módulo" es ambiguo. –

+0

Gracias! Terminé descargando el paquete ElementTree de effbot.org e instalándolo.Está funcionando ahora, pero todavía no tengo idea de por qué la biblioteca original no funcionaba ... – Jen

4

Tuve una situación graciosa, que puede o no ser similar a esto y encontró mi solución. Creé mi propio módulo para analizar archivos xml. Lo puse en my_project_root/utilities/xml.py. Cuando import xml.etree.ElementTree o xml.etree desde este módulo obtendría el error en el título de esta publicación. Estaba buscando en sí mismo, por lo que desde xml.py estaba intentando import etree.ElementTree, y no pudo encontrar un paquete o módulo llamado etree. Cambié el nombre de mi módulo a xml_parse.py y borré my_project_root/utilities/xml.pyc y funcionó perfectamente. Un simple recordatorio de precaución con las convenciones de nomenclatura de módulos.

44

Debido a que su nombre de archivo original es C: \ xml.py

Cambiar el nombre del archivo a cualquier otro nombre

+16

Oh dios el dolor. Además, no se olvide de eliminar el archivo "xml.pyc" también! – BastiBen

+2

Acabo de encontrarme con exactamente el mismo problema. Parecía lógico nombrar mi script xml.py ya que iba a usarlo para probar las librerías xml por primera vez para aprenderlas. No pensé en el nombre del guión atornillándose con el espacio de nombres de Python. :) Gracias por notar esto. – odigity

10

tengo el mismo error report("ImportError: No module named etree.ElementTree") al nombrar el archivo de prueba como xml.py. Y obtuvo fijo cuando lo renombré a algo más como xmltest.py.

Cuestiones relacionadas