自定义abc.py文件导入不符合预期的问题求助
abc.py文件导入不符合预期的问题求助
我最近在研究Python模块的导入机制,了解到导入模块时,Python会先查找同名的内置模块,找不到的话再去sys.path列出的目录里搜索。我先查看了自己系统的sys.path内容:
['/home/user/Desktop/Python', '/usr/lib64/python313.zip', '/usr/lib64/python3.13', '/usr/lib64/python3.13/lib-dynload', '/usr/lib64/python3.13/site-packages', '/usr/lib/python3.13/site-packages']
为了确认abc是不是内置模块,我运行了这段代码:
import sys print(sys.builtin_module_names)
输出结果里只有_abc,并没有abc,所以我确定abc不是内置模块。
接着我做了个验证实验:在sys.path排第一的/home/user/Desktop/Python目录下,创建了两个文件:
abc.py:var = 5main.py:import abc print(abc.var)
按照我的理解,既然abc不是内置模块,Python应该优先搜索当前目录,找到我自己写的abc.py,然后打印出5。可实际运行main.py时却报错了:
Traceback (most recent call last): File "/home/user/Desktop/Python/main.py", line 2, in <module> print(abc.var) ^^^^^^^ AttributeError: module 'abc' has no attribute 'var'
我完全摸不着头脑,有没有大佬能帮我分析下问题出在哪里?
备注:内容来源于stack exchange,提问作者Infinite
相关产品推荐
相关产品推荐

