python - 模块导入适用于解释器,但不适用于脚本

标签 python import interpreter elementtree

我开始学习本网站中有关 elementtree 的教程 http://www.bigfatalien.com/?p=223所以像往常一样,我在解释器上输入了引用脚本,然后我去了

import xml.etree.ElementTree as xml

解释器运行该命令很好,在解释器中使用“xml”没有问题,我的 IDE 甚至在自动完成中显示了该类的成员,但是当我在脚本中键入完全相同的行并尝试运行它,它说

object has no attribute '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, 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 将在您的脚本文件中查找!为脚本文件提供与您要导入的模块相同的名称绝不是一个好主意。

更新 回溯是您的 friend 。请领导仔细阅读。如果您不知道如何阅读它们,请在您的问题中包含追溯

我打赌你的看起来会和这个非常相似:

Traceback (most recent call last):
  File "xml.py", line 4, in <module>
    import xml.etree.ElementTree as et
  File "C:\junk\xml.py", line 4, 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__

运行它,并显示所有输出...复制/粘贴到您问题的编辑中。

在您的计算机上重复以下解释器 session ,并报告打印的内容:

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
>>>

关于python - 模块导入适用于解释器,但不适用于脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6159523/

相关文章:

python - Django 1.8 自定义注册模板文件夹不再工作

python - 如何从 python 列表中的前一个值中减去该值?

MySQL从txt文件导入浮点值

import - 将 .sql 文件导入 MySQL 时出现错误 1064 (42000)

scala - 从Scala解释器打印Unicode

python - Pandas :处理数据帧

Python - 从另一个类调用函数

mysql - 导入数据库架构

c++ - 如何编译 C++ 代码以在网页中显示(如在 PHP 中)

java - 用垃圾收集语言实现垃圾收集器有意义吗