当我使用 docker-compose 安装 fastapi 项目时,出现 AssertionError:

nor*_*dar 8 python python-3.x docker fastapi

当我使用 docker-compose 安装 fastapi 项目时,我得到了AssertionError: jinja2 must be installed to use Jinja2Templates

但是当我使用 env 安装它时,它将运行良好。

我的操作系统:

Ubuntu18.04STL

我的要求.txt:

fastapi~=0.68.2
starlette==0.14.2
pydantic~=1.8.1

uvicorn~=0.12.3
SQLAlchemy~=1.4.23

# WSGI
Werkzeug==1.0.1

pyjwt~=1.7.0

# async-exit-stack~=1.0.1
# async-generator~=1.10

jinja2~=2.11.2

# assert aiofiles is not None, "'aiofiles' must be installed to use FileResponse"
aiofiles~=0.6.0
python-multipart~=0.0.5

requests~=2.25.0
pyyaml~=5.3.1
# html-builder==0.0.6
loguru~=0.5.3
apscheduler==3.7.0

pytest~=6.1.2
html2text==2020.1.16
mkdocs==1.2.1

Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM python:3.8
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /server
COPY requirements.txt /server/
RUN pip install -r requirements.txt
COPY . /server/
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: '3.7'

services:
  figbox_api:
    build:
        context: .
        dockerfile: Dockerfile
    command:  uvicorn app.main:app --port 8773 --host 0.0.0.0 --reload
    volumes:
    - .:/server
    ports:
    - 8773:8773
Run Code Online (Sandbox Code Playgroud)

我需要提供一些其他信息吗?

谢谢

小智 3

我在 Heroku 上遇到了同样的问题,该错误来自 Jinja2 版本 2.11.x,它在本地运行,但不在 Heroku 中运行。

只需安装最新版本的 jinja2,它也可以在您的情况下正常工作。

pip install Jinja2==3.1.2
or 
pip install Jinja2 --upgrade
Run Code Online (Sandbox Code Playgroud)