我乞求在这个站点上跟随一个关于elementtree的教程http://www.bigfatalien.com/?p=223,所以像往常一样,我在解释器上输入参考脚本,然后我就去了
import xml.etree.ElementTree as xml
解释器很好地运行了这个命令,在intrepreter中使用了“xml”,我的IDE甚至在自动完成时显示了该类的成员,但是当我在一个脚本上输入了完全相同的行并试图运行它时,它说
object has no attribute 'etree'
,这条线工作:
^{pr2}$但如果我加上:
xml.etree.ElementTree = xml
尝试运行那个不起作用的脚本,我用我的IDE(pyscripter)和空闲的相同行为进行了尝试。 这里发生了什么,这种行为是什么,我从来没有读过“如何在python中导入”的教程或书籍中提到过。我觉得我错过了一些显而易见的东西。在
使用请求的错误消息进行更新
从IDLE 2.6运行提供的行
2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]
[u'C:\\Users\\grillermo\\Desktop', 'C:\\Program Files\\PyScripter\\Lib\\rpyc-python2x.zip', 'C:\\Python26\\lib\\site-packages\\dropbox_client-1.0-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\simplejson-2.1.6-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\poster-0.8.1-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\oauth-1.0.1-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\nose-1.0.0-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\mechanize-0.2.5-py2.6.egg', 'C:\\Windows\\system32\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26', 'C:\\Python26\\lib\\site-packages', 'C:\\Python26\\lib\\site-packages\\win32', 'C:\\Python26\\lib\\site-packages\\win32\\lib', 'C:\\Python26\\lib\\site-packages\\Pythonwin', 'C:\\Python26\\lib\\site-packages\\wx-2.8-msw-unicode']
2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]
[u'C:\\Users\\grillermo\\Desktop', 'C:\\Program Files\\PyScripter\\Lib\\rpyc-python2x.zip', 'C:\\Python26\\lib\\site-packages\\dropbox_client-1.0-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\simplejson-2.1.6-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\poster-0.8.1-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\oauth-1.0.1-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\nose-1.0.0-py2.6.egg', 'C:\\Python26\\lib\\site-packages\\mechanize-0.2.5-py2.6.egg', 'C:\\Windows\\system32\\python26.zip', 'C:\\Python26\\DLLs', 'C:\\Python26\\lib', 'C:\\Python26\\lib\\plat-win', 'C:\\Python26\\lib\\lib-tk', 'C:\\Python26', 'C:\\Python26\\lib\\site-packages', 'C:\\Python26\\lib\\site-packages\\win32', 'C:\\Python26\\lib\\site-packages\\win32\\lib', 'C:\\Python26\\lib\\site-packages\\Pythonwin', 'C:\\Python26\\lib\\site-packages\\wx-2.8-msw-unicode']
Traceback (most recent call last):
File "C:\Users\grillermo\Desktop\xml.py", line 4, in <module>
import xml.etree.ElementTree as et
File "C:\Users\grillermo\Desktop\xml.py", line 4, in <module>
import xml.etree.ElementTree as et
ImportError: No module named etree.ElementTree
翻译
C:\>python
Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import xml.etree.ElementTree as et
>>> print et.__file__
C:\Python26\lib\xml\etree\ElementTree.pyc
>>>
一个非常愚蠢的问题:你把你的脚本文件命名为
xml.py
?如果是这样的话,不要那么做。。。import xml.anything
将在您的脚本文件中查找!给脚本文件指定与要导入的模块相同的名称永远不是一个好主意。在更新回溯是你的朋友。引导学生仔细阅读。如果你不知道如何阅读它们,在你的问题中包括回溯。在
我敢打赌你的会和这个很相似:
否则:
设置只包含以下行的脚本:
^{pr2}$运行它,并显示所有输出。。。复制/粘贴到问题的编辑中。在
在计算机上重复以下解释程序会话,并报告打印的内容:
当您这样做时:
您将引入
xml.etree.ElementTree
“对象”,并将其称为xml
。在在你的第二个版本中似乎不是这样。在这种情况下,您将
^{pr2}$xml
导入为xml
,然后以错误的方式分配:这似乎是将
ElementTree
对象替换为对顶级xml
的引用,可能不是您想要的。我很想说:会是更准确的方法,但我不确定这是否会导致命名问题。在
在任何情况下,我看不出你的
import xml.etree.ElementTree as xml
版本实际上有什么问题,它似乎完全可以满足您的需要(对我来说,它在脚本中工作得很好)。在相关问题 更多 >
编程相关推荐