Python脚本 from collections import namedtuple 失败

本文通过实例演示了Python脚本命名与内置模块名相同导致的导入错误问题,并给出了合理的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

在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后,再执行,果然成功了。

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

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

问题总结:

         对于脚本的名字的选择一定要严谨,不能选择python的模块名作为脚本的名字,以避免出现一些意外的错误,对于模块中的函数名,尽管以它作为脚本名并未报错,但是还是不建议使用类似的关键字命名脚本,希望大家能引以为戒。

转载于:https://my.oschina.net/u/2335552/blog/815605

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值