'module' object has no attribute 'Thread'解决方法及模块加载顺序

博客分享了Python脚本执行时出现的错误,经排查是脚本名称与模块名冲突导致加载错误。同时引出两个问题,一是命名不要与Python模块、关键字重合,二是介绍了Python加载模块的顺序,依次为当前主目录、PYTHONPATH目录和标准库目录。

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

源码片段:

class myThread(threading.Thread):
    def __init__(self, threadID, name, counter):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.counter = counter

 

执行时提示如下错误:

Traceback (most recent call last):

  File "threading.py", line 2, in <module>

    import threading

  File "I:\MY_TEST\py\thread\threading.py", line 7, in <module>

    class myThread(threading.Thread):

AttributeError: 'module' object has no attribute 'Thread'

 

1、检查是否为threadingThread拼写错误,认真对比后确认无误;
2、判断是否为threading模块没有安装,查询发现python3.4自带就有此模块;
3、最后检查脚本的名称是threading.py,怀疑是与模块名称冲突,导致加载错误,将脚本名称改为thread_ing.py后执行,正确


由此引出两个问题:

1、命名问题:不管是变量还是脚本名称,都不要和python本身的模块、关键字等重合;

2、Python加载模块顺序问题:

加载模块搜索路径被存储在sys模块中的path变量中,我们使用sys.path输出:

 

第一个参数是‘’(空串),代表是当前目录,后续的目录分别为PYTHONPATH目录和标准库目录,所以得到加载模块的顺序为:

1)当前主目录

2)PYTHONPATH目录

3)标准库目录

 

转载于:https://www.cnblogs.com/xbook-ben/p/9542990.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值