Python仅在指定文件夹下import torch、ctypes等模块报AttributeError问题
问题根因
Python执行模块导入时,会优先搜索当前工作目录下的同名文件,再依次搜索系统标准库路径、第三方库安装路径。
你出问题的文件夹下存在名为struct.py的文件,该名称与Python官方标准库的struct模块完全重名:
- 当你在该文件夹下运行Python时,所有依赖标准库
struct的库(包括torch、ctypes等)导入struct时,实际加载的是你自定义的struct.py,该文件没有标准库struct的内置属性,就会触发连锁的AttributeError - 其他目录下没有重名文件,所有库会导入正常的官方标准库struct,因此不会报错
修复方案
- 把该文件夹下的
struct.py重命名为和标准库不冲突的名称,比如custom_struct.py,同步修改你自己代码中所有导入该自定义文件的语句 - 后续编写代码时,不要使用Python标准库、已安装第三方库的名称作为自有
.py文件或文件夹的命名,常见易踩坑的名称包括torch.py、numpy.py、json.py、time.py、ctypes.py等
内容的提问来源于stack exchange,提问作者Nikita Belooussov
相关产品推荐
相关产品推荐

