본문 바로가기
Python

Python - not ModuleNotFoundError, subprocess

by 올엠 2024. 2. 25.
반응형

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에 함께 작성하는 것이다.

 

 

반응형