因为python从
sys.path列表的第一个目录开始按顺序检查目录,直到找到要查找的
.py文件为止。
理想情况下,当前目录或脚本目录始终是列表中的第一个元素,始终是第一个元素,除非像您一样对其进行修改。从文档-
在程序启动时进行初始化,该列表的第一项path
[0]是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用(例如,如果交互式调用解释器或从标准输入中读取脚本),则path
[0]为空字符串,该字符串将引导Python首先搜索当前目录中的模块。请注意,由于PYTHONPATH的结果,在插入条目之前插入了脚本目录。
因此,最有可能的是,
.py在当前目录(运行脚本的位置)中,有一个文件与您要从中导入的模块同名。
另外,要注意有关
importErrors的问题,可以说导入错误说–
importError: No module named main这并不意味着s
main.py被覆盖,不,如果被覆盖我们就不会在尝试读取它时遇到问题。其上方的某些模块被覆盖。
py或其他文件。
范例-
我的目录结构看起来像-
- test - shared - __init__.py - phtest.py - testmain.py
现在,从
testmain.py,我打电话给
from shared import phtest,它工作正常。
现在假设我在
test目录`中引入了shared.py ,例如-
- test - shared - __init__.py - phtest.py - testmain.py - shared.py
现在,当我尝试从中执行操作
from shared import phtest时
testmain.py,我会收到错误消息-
importError: cannot import name 'phtest'
如您在上面看到的,引起问题的文件
shared.py不是
phtest.py。



