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

相關文章
相關標籤/搜索