fix(backend): setuptools<80 핀 (pykrx 가 pkg_resources 필요)
증상 — 사금향 게임컴 (192.168.10.13) 백엔드 진단으로 확정:
POST /api/refresh/005930 → pykrx_ohlcv: failed
error: 'No module named pkg_resources'
root cause: setuptools 80.0.0 (2025-04) 이 pkg_resources 모듈을 제거함.
Dockerfile 의 'pip install --upgrade ... setuptools ...' 가 최신 (80+) 을
설치 → pykrx 의 'import pkg_resources' 가 import 실패.
해결:
1) bootstrap 단계에서 'pip install setuptools<80' 명시 핀
2) reqs.txt 설치 후에도 동일 핀 반복 (transitive upgrade 차단)
3) 빌드 단계에서 'import pkg_resources' 확인 — 깨지면 빌드 실패시켜
런타임에서 발견되는 일 없도록 함
이 패치 후 KIS (이미 ok 였음) 와 함께 pykrx ohlcv/trading_value 가 정상
동작 → chart 자동 충전 (fa817b3) 이 의도대로 데이터 채워 넣음.
별개 이슈 (이 커밋 범위 밖): FinBERT/Chronos 가 RTX 3070 Ti 에서
'no kernel image is available for execution on the device' 발생.
임시 회피: .env 에 MODEL_DEVICE=cpu 추가.
This commit is contained in:
@@ -23,8 +23,12 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
&& curl -sSL https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py \
|
&& curl -sSL https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py \
|
||||||
&& python /tmp/get-pip.py \
|
&& python /tmp/get-pip.py \
|
||||||
&& rm /tmp/get-pip.py \
|
&& rm /tmp/get-pip.py \
|
||||||
&& python -m pip install --upgrade pip setuptools wheel \
|
&& python -m pip install --upgrade pip wheel \
|
||||||
|
&& python -m pip install "setuptools<80" \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
# setuptools 80+ 은 pkg_resources 모듈을 제거함. pykrx 가 `import pkg_resources` 를
|
||||||
|
# 하므로 80 미만으로 핀. 아래 reqs.txt 단계에서 다른 deps 가 setuptools 재upgrade 를
|
||||||
|
# 트리거하지 않도록 별도 명령으로 고정.
|
||||||
|
|
||||||
# Sanity check: 이 출력은 빌드 로그에 박혀서 다음에 인터프리터 불일치 의심될 때 즉시 확인 가능.
|
# Sanity check: 이 출력은 빌드 로그에 박혀서 다음에 인터프리터 불일치 의심될 때 즉시 확인 가능.
|
||||||
RUN python -V && python -m pip -V
|
RUN python -V && python -m pip -V
|
||||||
@@ -45,7 +49,9 @@ RUN python -m pip install --extra-index-url https://download.pytorch.org/whl/cu1
|
|||||||
RUN python -c "import tomllib; \
|
RUN python -c "import tomllib; \
|
||||||
deps = tomllib.load(open('pyproject.toml','rb'))['project']['dependencies']; \
|
deps = tomllib.load(open('pyproject.toml','rb'))['project']['dependencies']; \
|
||||||
open('/tmp/reqs.txt','w').write('\n'.join(deps))" \
|
open('/tmp/reqs.txt','w').write('\n'.join(deps))" \
|
||||||
&& python -m pip install -r /tmp/reqs.txt
|
&& python -m pip install -r /tmp/reqs.txt \
|
||||||
|
&& python -m pip install "setuptools<80" \
|
||||||
|
&& python -c "import pkg_resources; print('pkg_resources OK from', pkg_resources.__file__)"
|
||||||
|
|
||||||
COPY app ./app
|
COPY app ./app
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user