我遇到了这个错误: 从 routers.患者 导入路由器作为患者路由器 ModuleNotFoundError:没有名为“路由器”的模块
当我尝试在我的项目中运行 docker-compose up api 时。
我的文件结构:
我的 Dockerfile:
FROM python:3.9-slim-buster
WORKDIR /project
COPY ./requirements.txt .
RUN pip install -r requirements.txt
COPY ./api /project/api/
CMD ["uvicorn", "api.main:app", "--host=0.0.0.0", "--port=8000"]
EXPOSE 8000
我的docker-compose:
version: "3.8"
services:
api:
build: .
command: ["uvicorn", "api.main:app", "--host=0.0.0.0", "--port=8000"]
volumes:
- ./api:/project/api
ports:
- "8000:8000"
为了从路由器导入,python 需要同一目录中的
__init__.py
文件将其视为模块。
看起来你的 api 目录中的
init
文件开头多了一个下划线。
我遇到了同样的问题,并且创建
__init__.py
文件 没有 工作(而且,Python3 无论如何也不需要它们)。但是,将 WORKDIR 更改为 main.py 目录(在您的情况下为/project/api
)并在 CMD 数组中反映此更改(main:app
而不是api.main:app
)为我修复了它。