환경변수 트러블 슈팅 - 100-hours-a-week/12-marong-Wiki GitHub Wiki

📍 환경변수 경로 관련 트러블슈팅

  • dev 환경에서 main.py 실행 시 상대경로 상 잘못된 경로를 지정하여 Chroma_db가 잘 실행되지 않는 문제가 발생
  • 그래서 chroma_client가 제대로 초기화되지 않아 장소 추천 모듈이 적절하게 실행하지 않는 문제가 발생
for metadata, dist in zip(review_results["metadatas"][0], review_results["distances"][0]):
            sim = (1 - dist) * 4
            score_rows.append({
                "rating": float(metadata.get("평균별점", 0)),
                "distance": haversine(lat, lng, metadata.get("위도"), metadata.get("경도")),
                "similarity": sim
             })
스코어 정규화 및 가중치 계산 실패: similarity
  • 이는 run_chroma.py가 현재 디렉토리 기준 상위 디렉토리의 .env 파일을 적절하게 참조하지 못하여 발생

✔️ 원인 분석

영역 원인 설명
Chroma Client 초기화 문제 현재 디렉토리 기준 상위 디렉토리의 .env 파일을 적절하게 참조하지 못하여 발생

✔️ 해결 방법

현재 파일의 부모 디렉토리의 부모 디렉토리(현재 디렉토리의 부모 디렉토리 내) .env 파일을 참조하는 방식으로 변경

# 기존
load_dotenv()

CHROMA_PORT = os.getenv("CHROMA_PORT")
# 이후
dotenv_path = Path(__file__).resolve().parent.parent / ".env"
load_dotenv(dotenv_path=dotenv_path)

CHROMA_PORT = os.getenv("CHROMA_PORT")

✔️ 결과 및 회고

항목 잘못된 방식 수정된 방식
.env 파일 로드 방식 변경 스크립트 파일이 위치한 디렉토리 내 .env 불러오는 방식 현재 파일의 부모 디렉토리의 부모 디렉토리(현재 디렉토리의 부모 디렉토리 내) .env 파일을 참조하는 방식으로 변경
  • 모듈화를 진행하면서 참조 경로까지 적절하게 변경하는 것이 중요하다는 것을 인식
  • dotenv_path = Path(__file__).resolve().parent.parent / ".env" 방식을 주 방식으로 사용할 것으로 예상됨