[英]ModuleNotFoundError: No module named 'app' fastapi docker
[英]Deploying my Python (FastAPI) Application with Docker: ModuleNotFoundError: No module named 'FolderInStructure'
我正在尝试使用 Docker 部署我的 fastAPI 应用程序。 它是一个更大系统的一部分,我稍后会尝试使用 docker-compose 相互连接。 它在本地运行良好,但是当我尝试部署它时,它没有找到我的子目录。 我在所有目录中都有__init__.py
文件。
这是我的 Dockerfile:
FROM python:3.8
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN python3.8 -m pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./app /code/app
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
Dockerfile 取自 FastAPI 文档,我还尝试手动复制 main.py 和 recognition_service 目录(并设置 python 环境),但它没有改变错误(虽然可能做错了)。 构建顺利,没有错误,运行仅在导入之前有效
from recognition_service.json_reader import Json_Reader
在我的 main.py 中,这会导致错误
File "/code/./app/main.py", line 3, in <module>
from recognition_service.json_reader import Json_Reader
ModuleNotFoundError: No module named 'recognition_service'
这可能有一些我正在监督的明显解决方案,因为这是我第一次使用 Python 有一个“更大”的应用程序,但我希望在这里找到一些帮助。
附带说明一下,在 json_reader.py 中,还有 spacy 子目录中的文件的导入,每个文件都与各自的 spacy 模型交互。
编辑:被要求提供 requirements.txt:
fastapi==0.79.0
scipy==1.7.3
pydantic==1.8.2
uvicorn==0.17.6
uvloop==0.16.0
它肯定与 venv 和路径有关,这是一个旧的 fastapi dockek 与您的代码相结合
FROM python:3.8-slim-buster
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
# install system dependencies
RUN apt-get update \
&& apt-get -y install gcc make \
&& rm -rf /var/lib/apt/lists/*s
WORKDIR /code
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
COPY ./requirements.txt /code/requirements.txt
RUN pip install -r /code/requirements.txt
EXPOSE 8000
COPY ./app /code/app
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.