[Python]同一目录下导入不同文件IDE报错却能正常执行的问题
今天看代码的时候,发现IDEA报错了,但是代码却可以正常执行,改正错误后却反而 run 报错
如下图,执行 main.py 运行程序
在 ./loss/loss.py 中调用与 loss.py 同一目录下的 discriminator.py 时
- 如果在
loss.py中使用from loss import discriminatorIDEA 会报错,可是运行main.py正常运行。

- 如果在
loss.py中使用import discriminatorIDEA 不报错,可是运行main.py会报找不到discriminator.py模块。

这是因为,在我们执行import时,当前目录是不会变的(就算是执行子目录的文件),还是需要完整的包名。而这里我们所执行的是main.py,所以当前目录会一直保持main.py的当前目录,当执行loss.py时,当前目录还是main.py时的目录。故需要通过from loss import discriminator导入discriminator.py。