簡體   English   中英

ModuleNotFoundError 即使模塊被識別

[英]ModuleNotFoundError even though the module is recognized

我的文件夾結構是:

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

mytest.py ,我正在嘗試導入calc.py ,如下所示:

from app import calc

mytest.py中,app 和 calc 都突出顯示為綠色,當我在它們上面輸入 hover 時,它顯示(模塊)。 好像可以識別,但是運行的時候報錯。 我知道之前有人問過這個問題,但我還沒有找到解決方案。

您需要在每個文件夾中添加__init__.py以將其標記為 package。它可以是一個空文件。 查看文檔以獲取更多信息。

我在我的機器上創建了完全相同的文件層次結構,然后在 calc.py 文件中隨機創建了一個名為hello()calc.py ,這是成功調用 app 文件夾中的 function 的代碼,

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

也許我誤解了這個問題,所以這里有一個關於導入模塊時 IDE 行為的詳細答案,

正如我們在下圖中看到的,我們可以在幾乎任何 python IDE 中導入錯誤的模塊,除非它是一個智能的 IDE 並且預裝了擴展來檢查,就像它對其他腳本語言或它所做的那樣,否則它不會給出錯誤暫時還不會報錯,下面可以看到,

在此處輸入圖像描述

我們可以看到 IDE 沒有顯示任何錯誤,甚至沒有給出任何類型的警告,但是當您運行代碼時,您會收到此錯誤,這與 OP 在運行代碼時收到的錯誤相同,

在此處輸入圖像描述

可以嘗試使用from app import calc ,它會給您帶來與from imagination import dreams相同的錯誤。

但是當你添加幾行代碼時,

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

它開始以類似於 OP 試圖做的方式導入,但僅使用額外的代碼行,為什么? 這是因為他們的文件彼此平行,可以在他們提到的文件夾中看到,

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

也許這回答了評論中提到的問題,我冒昧地假設了一些事情,但或多或少這就是正在發生的事情,請糾正這個答案。

您應該檢查並確保您沒有名為“calc.py”的現有文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM