Python导入areas模块调用triangle函数报AttributeError问题求助
核心原因
你导入的areas根本不是讲师展示的自定义模块,而是Python第三方库目录(site-packages)里的同名第三方包。从areas.__file__的路径能看出来,这个包和你要的areas.py完全是两回事,自然没有triangle这类函数。
解决步骤
优先方案:重命名自定义模块
把你自己写的areas.py改成其他名字,比如my_areas.py,之后用import my_areas导入,再调用my_areas.triangle(3,5),彻底避免同名冲突。检查Python模块搜索路径
执行以下代码,查看Python查找模块的顺序:import sys print(sys.path)你自己的
areas.py必须在这个列表的某个目录里,而且要确保它的位置在/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages前面,否则Python会优先导入第三方包。如果不在里面,可以手动添加:import sys sys.path.insert(0, "/你存放自定义areas.py的目录路径")再重新导入
areas即可。关于Python版本差异
你用python和python3调用的是不同版本的Python,它们各自的site-packages目录是独立的。可能其中一个版本没有安装这个第三方areas包,所以导入的是你的自定义模块,但这只是暂时的,最好还是用重命名的方法彻底解决。
补充解释
Python导入模块时,只要能找到同名的包/模块就不会报错,不管它里面有没有你需要的函数。你遇到的情况就是找到了同名第三方包,所以导入成功,但调用不存在的函数才触发AttributeError。
内容的提问来源于stack exchange,提问作者user2599291

