반응형
not ModuleNotFoundError 에러는 모듈 설치 위치를 찾을 수 없을 때 많이 발생하고, subprocess를 실행했을 경우 일반적인 상황과 다른 참조 오류로 인해 발생하는 경우도 존재한다.
가장 흔히 발생하는 모듈의 설치 위치가 달라서 발생하는 오류는 sys.path.append 을 이용하여 현재 작업 경로의 상위 경로를 입력해 줌으로써 해결이 가능하다.
가장 많이 사용하는 방법은, 하위에서 상위 경로를 추가하는 방식이다.
base_dir > sub_dir(현재 Python 파일 위치)
이때 경로를 입력하지 않고 sys.path.append(os.path.dirname(os.path.dirname(__file__))) 를 입력하면 자동으로 현재 폴더의 상위 폴더를 시스템 변수에 설정하게 된다.
import sys
import os
# 상위 폴더 환경 변수에 등록
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
다음은 subprocess로 실행할 때 not ModuleNotFoundError 오류가 발생한다면, 경로상의 문제가 아닌 별도의 프로세스에서 전역 모듈의 관리가 되지 않는 상황이다. 따라서 이때에는 파일을 나누어 작성한 프로그램 코드를 하나로 합치기를 권장한다.
즉 subprocess로 실행을 A.py를 하고 B.py를 참조하는 b 함수가 있다면, A.py에 B.py를 지우고, b 함수 내용을 A.py에 함께 작성하는 것이다.
반응형
'Python' 카테고리의 다른 글
Python - cv2 설치 방법 (0) | 2024.02.27 |
---|---|
SQLAlchemy - str() argument 'encoding' must be str, not ModuleNotFoundError (0) | 2024.02.26 |
Python - AWS S3 Select 와 Atena 차이점, 기본 사용법 (0) | 2024.02.22 |
VSCode - 파일 저장시 공백 자동 제거 (0) | 2024.02.22 |
Python - 특정 문자열 검색하여 잘라내기, finditer (0) | 2024.02.21 |