python - ModuleNotFoundError 即使模块被识别

我的文件夹结构是:

|-fastapi
   |-app
     |-calc.py
   |-tests
     |-mytest.py

mytest.py 中,我尝试导入 calc.py,如下所示:

from app import calc

mytest.py 中,app 和 calc 都突出显示为绿色,当我将鼠标悬停在它们上面时,它会显示(模块)。好像可以识别,但是运行的时候报错。我知道之前有人问过这个问题,但我还没有找到解决方案。

最佳答案

我在我的机器上创建了完全相同的文件层次结构,然后在 calc.py 文件中创建了一个名为 hello() 的随机函数,这是成功的代码调用应用程序文件夹中的函数,

import sys
sys.path.append('../')
from app import calc
print(calc.hello())

也许我误解了这个问题,所以这里有一个关于导入模块时 IDE 行为的更详细的答案,

正如我们在下图中所看到的,我们可以在几乎任何 Python IDE 中导入错误的模块,并且它不会给出错误,除非它是一个智能 IDE,具有预安装的扩展以进行检查,就像它对其他脚本所做的那样languages 不然暂时不会报错,下面可以看到,

我们可以看到 IDE 没有显示任何错误,甚至没有给出任何类型的警告,但是当您运行代码时,您会收到此错误,这与 OP 在运行他们的代码时收到的错误相同代码,

这可以在 from app import calc 中尝试,它会给出与 from imagination import dreams 相同的错误。

但是当你添加几行代码时,

import sys
sys.path.append('../')

它开始以类似于 OP 试图做的方式导入,但只使用额外的代码行,为什么? 这是因为他们的文件彼此并行,这可以在他们提到的文件夹中看到,

|-fastapi
   |-app
     |-calc.py
   |-tests
     |-mytest.py

也许这回答了评论中提到的问题,我冒昧地假设了一些事情,但或多或​​少这就是正在发生的事情,请纠正这个答案。

https://stackoverflow.com/questions/74966729/

相关文章:

qt - Qt中,对于上下文菜单项,如何隐藏图标的空间

node.js - 为什么当我使用 "waitForSelector"时 Puppeeteer 导致

laravel - 生产模式编译报错 "is not a function"Vue Laravel

javascript - 是的,当 .required() 为 false 时,会继续在同一个属性上

web-services - 使用 Netbeans 平台使用 Web 服务

windows-installer - 在 Windows 的添加/删除程序中显示正确的大小

haskell - 如何测试自定义 StateT 的 Monad 实例?

typescript - 如何在保持默认行为的同时扩展 tsconfig 中的类型

c++ - Clang 静态链接 libc++

windows-error-reporting - 应用程序关闭和 Windows 错误报告