模块导入仅在解释器上起作用,而在脚本上不起作用

问题描述

| 我开始在这个网站http://www.bigfatalien.com/?p=223上关注elementtree教程,因此像往常一样,我在解释器上键入了参考脚本,然后我去了
import xml.etree.ElementTree as xml
解释器可以很好地运行该命令,并在解释器中使用\“ xml \”没问题,我的IDE甚至在自动完成功能显示了该类的成员,但是只要我在脚本上键入完全相同的行并尝试运行它说   对象没有属性\'etree \' ,这行有效:
import xml
但是,如果我添加
xml.etree.ElementTree = xml
并尝试运行不起作用的脚本,我尝试使用我的IDE(pyscripter)和IDLE,具有相同的行为。 这是怎么回事,这是什么行为,我从未读过任何“如何在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,\'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\",in <module>
    import xml.etree.ElementTree as et
ImportError: No module named etree.ElementTree
口译员
C:\\>python
Python 2.6.6 (r266:84297,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
>>>
    

解决方法

        一个非常愚蠢的问题:您是否将脚本文件命名为“ѭ5”?如果是这样,请不要做...
import xml.anything
将在您的脚本文件中查找!为脚本文件提供与要导入的模块相同的名称绝不是一个好主意。 更新追溯是您的朋友。导致仔细阅读它们。如果您不知道如何阅读它们,请在问题中包含回溯。 我敢打赌,您的情况看起来会与此非常相似:
Traceback (most recent call last):
  File \"xml.py\",line 4,in <module>
    import xml.etree.ElementTree as et
  File \"C:\\junk\\xml.py\",in <module> #### here\'s the culprit ####
    import xml.etree.ElementTree as et
ImportError: No module named etree.ElementTree
除此以外: 设置仅包含以下几行的脚本:
import sys
print sys.version
print sys.path
import xml.etree.ElementTree as et
print et.__file__
import xml.etree.ElementTree as xml
print xml.__file__
运行它,并显示所有输出...复制/粘贴到您的问题的编辑中。 在计算机上重复以下解释程序会话,并报告打印内容:
C:\\junk>\\python26\\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
>>>
    ,        当您这样做时:
import xml.etree.ElementTree as xml
您要输入
xml.etree.ElementTree
\“ object \”,并将其称为
xml
。 在您的第二个版本中,情况似乎并非如此。在这种情况下,您将
xml
导入为
xml
,然后分配错误的方法:
xml.etree.ElementTree = xml
这似乎是用对顶级
xml
的引用替换了
ElementTree
对象,可能不是您想要的。我很想说:
xml = xml.etree.ElementTree
会是更准确的方法,但是我不确定这是否会引起命名问题。 无论如何,我看不出您的
import xml.etree.ElementTree as xml
版本实际上有什么问题。它似乎完全可以满足您的要求(并且对我而言在脚本中工作正常)。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...