![](/img/trans.png)
[英]"ModuleNotFoundError: No module named '…' even though module is installed
[英]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.