Python脚本 from collections import namedtuple 失败

脚本collections.py代码以下python

#!/usr/bin/python3
#-*- coding: utf-8 -*-
#collections

from collections import namedtuple

Point = namedtuple('Point',['x','y'])
p=Point(1,2)
print('x=',p.x,'y=',p.y)

在linux下,执行脚本后,报错linux

[root@localhost MyPython]# python3 collections.py 
Traceback (most recent call last):
  File "collections.py", line 4, in <module>
    from collections import namedtuple
  File "/home/chentengbo/share/MyPython/collections.py", line 4, in <module>
    from collections import namedtuple
ImportError: cannot import name 'namedtuple'

以前的导入其余模块都是没有问题的,在网上查找了几种解释,都不能解决个人问题,最后怀疑是脚本的名字和导入的模块的名字起了冲突,函数

[root@localhost MyPython]# cat collections.py 
#!/usr/bin/python3
#-*- coding: utf-8 -*-
#collections
from collections import namedtuple

Point = namedtuple('Point',['x','y'])
p=Point(1,2)
print('x=',p.x,'y=',p.y)

将脚本名字改成collectionstest后,再执行,果真成功了。code

为了详细了解,我将脚本的名字改成了namedtuple.py,执行后,并未出现上述相似的错误。utf-8

[root@localhost MyPython]# python3 namedtuple.py               
x= 1 y= 2

问题总结:io

         对于脚本的名字的选择必定要严谨,不能选择python的模块名做为脚本的名字,以免出现一些意外的错误,对于模块中的函数名,尽管以它做为脚本名并未报错,可是仍是不建议使用相似的关键字命名脚本,但愿你们能引觉得戒。ast

相关文章
相关标签/搜索