#Fix – Docker로 내보낸 Azure CustomVision – ImportError: 'markupsafe'에서 'soft_unicode' 이름을 가져올 수 없음

안녕 !

지난 며칠 동안 CustomVision.ai로 만든 모델을 docker로 내보낼 때 이상한 오류를 발견했습니다. 도커 이미지 빌드는 정상이지만 컨테이너를 실행하려고 할 때 이 오류를 발견했습니다.


❯ docker run -p 8090:8090 squirrelscv
Traceback (most recent call last):
  File "app.py", line 7, in <module>
    from flask import Flask, request, jsonify
  File "/usr/local/lib/python3.7/site-packages/flask/ __init__.py", line 14, in <module>
    from jinja2 import escape
  File "/usr/local/lib/python3.7/site-packages/jinja2/ __init__.py", line 12, in <module>
    from .environment import Environment
  File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 25, in <module>
    from .defaults import BLOCK_END_STRING
  File "/usr/local/lib/python3.7/site-packages/jinja2/defaults.py", line 3, in <module>
    from .filters import FILTERS as DEFAULT_FILTERS # noqa: F401
  File "/usr/local/lib/python3.7/site-packages/jinja2/filters.py", line 13, in <module>
    from markupsafe import soft_unicode
ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.7/site-packages/markupsafe/ __init__.py)





그리고 오류를 이해하고 해결 방법을 찾는 데 시간이 걸렸습니다. 검색과 읽기를 피하려면 이 문제만 읽으면 됩니다.

[Python] Release 4.21.0 broke multiple Google Cloud client libraries (“TypeError: Descriptors cannot not be created directly.”) #10051

해결책은 도커 이미지 정의에서 일부 패키지로 다운그레이드하는 것입니다. 다음 도커 정의는 작동하는 데 필요한 2개의 패키지를 추가합니다.


FROM python:3.7-slim

RUN pip install -U pip

# custom packages version to avoid custom vision error
RUN pip install markupsafe==2.0.1
RUN pip install protobuf==3.20.1

RUN pip install --no-cache-dir numpy~=1.17.5 tensorflow~=2.0.2 flask~=1.1.2 pillow~=7.2.0
RUN pip install --no-cache-dir mscviplib==2.200731.16

COPY app /app

# Expose the port
EXPOSE 8090

# Set the working directory
WORKDIR /app

# Run the flask server for the endpoints
CMD python -u app.py



이제 이미지를 실행할 수 있습니다!



즐거운 코딩하세요!

인사말

엘 브루노

내 블로그ElBruno.com에 더 많은 게시물이 있습니다.

좋은 웹페이지 즐겨찾기