ModuleNotFoundError:没有名为“路由器”的模块

问题描述 投票:0回答:2

我遇到了这个错误: 从 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 docker docker-compose dockerfile fastapi
2个回答
1
投票

为了从路由器导入,python 需要同一目录中的

__init__.py
文件将其视为模块。

看起来你的 api 目录中的

init
文件开头多了一个下划线。


0
投票

我遇到了同样的问题,并且创建

__init__.py
文件 没有 工作(而且,Python3 无论如何也不需要它们)。但是,将 WORKDIR 更改为 main.py 目录(在您的情况下为
/project/api
并在 CMD 数组中反映此更改
main:app
而不是
api.main:app
为我修复了它。

© www.soinside.com 2019 - 2024. All rights reserved.