[英]Python ImportError: attempted relative import with no known parent package
我正在學習fastapi 。 我有一個非常簡單的項目結構,像這樣
.
├── __init__.py
├── database.py
├── main.py
├── models.py
├── requirements.txt
└── schemas.py
里面main.py
是
from fastapi import FastAPI
from typing import Optional
from . import schemas, models
from .database import engine
app = FastAPI()
# more code here...
但是當我用uvicorn main:app --reload
運行它時,我得到了錯誤
...
從 。 導入模式、模型
ImportError:嘗試在沒有已知父包的情況下進行相對導入
我不明白為什么我會收到這個錯誤。 我正在松散地遵循本教程。 我還閱讀了許多相關的 SO 問題( 1 2 3 ),但似乎沒有一個符合我的情況。
不要將文件導入為“from . import schemas, models”,而是嘗試像這樣直接導入它 - import schemas,models 。我認為這可能會奏效。
雖然你的邏輯“。” 目錄是正確的,相對導入總是依賴於環境配置,這可能會因 IDE、venv 等而有所不同,例如,在 VScode 中, env
可能會根據launch.json
和settings.json
在運行時有所不同
我建議您更好地構建您的項目,使其包含包含__init__.py
和同音模塊名稱的包文件夾,因此您可以在__init__.py
文件中設置導入行為。
示例感謝:這里Database
, Model1
和Model2
是database/database.py
和models/models.py
中的類
其中database/__init__.py
定義如下,以鏈接 database.py 中的 Database 類,在“上層”文件夾中導入
並且models/__init__py
類似地將models.py
類鏈接到“上層”文件夾
from
關鍵字引用目錄時,默認情況下使用被調用目錄中的__init__.py
將對象導入 main,因此您可以隨意將特定實例或變量與常量一起定義到__init__.py
中,以及任何類型的操作(雖然並不總是一件好事......)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.