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