kosmo138 / resumate

자기소개서를 세상에서 가장 쉽게 쓰는 방법
https://www.resumate.store
0 stars 0 forks source link

ModuleNotFoundError 해결 #59

Closed suyons closed 3 months ago

suyons commented 3 months ago

세 줄 요약

  1. ModuleNotFoundError: No module named 'app'
  2. root@container:/data# export PYTHONPATH=$PWD
  3. python OOO.py -> 실행 성공

문제 상황

다음과 같이 python OOO.py 명령으로 파이썬 코드 실행을 시도했다.

root@817ec7546bb8:/data/app/service# python run_openai.py

해당 경로에 분명 env.py 파일과 init.py 파일이 있었다. 그러나, ModuleNotFoundError가 발생하면서 계속 파일을 찾지 못했다.

Traceback (most recent call last):
  File "/data/app/service/run_openai.py", line 4, in <module>
    from app.core.env import OPENAI_API_KEY
ModuleNotFoundError: No module named 'app'

1차 해결 시도

현재 디렉토리 밖에서 파일을 import하기 위해 조사한 결과 sys.path.append()를 이용하라는 문서가 많이 보였다.

Google 검색 결과: Python import from parent directory

  1. https://www.geeksforgeeks.org/python-import-from-parent-directory/
  2. https://favtutor.com/blogs/import-from-parent-directory-python
  3. https://medium.com/@teamcode20233/importing-modules-from-parent-directory-using-python-fb6632f81682

그러나 os, sys를 이용한 경로 변경은 전혀 도움이 되지 못했다.

2차 해결 시도

추가로 검색을 하다가 다음과 같은 FastAPI 레포지토리에서의 다음 Issue를 발견하였다.

https://github.com/tiangolo/fastapi/issues/2582#issuecomment-752845856

현재의 프로젝트 폴더에서부터 패키지가 시작됨을 파이썬에서 알 수 있도록 다음과 같이 환경 변수를 추가해야 한다. 윈도우에서는 export 대신 set 명령어를 이용한다.

root@817ec7546bb8:/data# export PYTHONPATH=$PWD

이제는 파일 실행 시 ModuleNotFoundError가 표시되지는 않았다.

root@817ec7546bb8:/data/app/service# python run_openai.py
/usr/local/lib/python3.12/site-packages/langchain_core/_api/deprecation.py:117: LangChainDeprecationWarning: The function `run` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use invoke instead.
  warn_deprecated(
suyons commented 3 months ago

Close #59