인공지능을 좋아하는 곧미남

[python] sys.path, sys.modules를 이용해서 나의 워크 스페이스 경로를 맞춰보자! 본문

code_study/python world

[python] sys.path, sys.modules를 이용해서 나의 워크 스페이스 경로를 맞춰보자!

곧미남 2025. 1. 3. 10:40
728x90

오늘은 sys.path, sys.modules에 대해 알아보고, python에서 소스코드가 실행되는 장소를 적절하게 설정하는 방법을 알아보겠습니다.

 

 


 

제가 겪은 경험으로는 python pip lib openwakeword 모듈을 install해서 /usr/local/lib/python3.10/dist-packages/openwakeword 이 경로에 있는 소스 파일들에 vsc가 접근해서 수정하게 되더라고요! 근데 저는 수정된 내용을 github에 바로 commit하기 위해서 local path인 /home/openWakeWord/openwakeword 에서 소스 파일들을 수정하려고 했습니다. 하지만, 처음에 import 할 당시 /usr/local/lib/python3.10/dist-packages/openwakeword에 module path가 캐싱되어 /home/openWakeWord/openwakeword 경로를 읽지를 못했어요. 그래서 openwakeword와 관련된 module path를 모두 삭제하고 다시 import 하는 작업을 진행했습니다. 여기서 다시 import 할때 sys.path를 활용해 내가 실행하고자 하는 /home/openWakeWord 시스템 폴더 경로를 가장 앞에 insert해주고 다시 import를 실행하면 됩니다.

 

자 이렇게 말로 설명한 내용을 코드로 보여드릴게요.

 

1. 이미 캐싱된 Module을 제거!

import sys
# 기존 openwakeword 모듈 제거
modules_to_remove = [key for key in sys.modules if key.startswith("openwakeword")]
for module in modules_to_remove:
    del sys.modules[module]

 

2. sys.path에 저장된 시스템 경로를 가장 상위에 저장하고 중복되는 path는 삭제

# /home/openWakeWord 중복 제거 및 하나만 남기기
# sys.path 삭제: sys.path.remove("/home/openWakeWord")

import sys
home_path = "/home/openWakeWord"
sys.path.insert(0, home_path)
unique_paths = []
for path in sys.path:
    if path not in unique_paths:
        unique_paths.append(path)
sys.path = unique_paths

# 확인
print("Cleaned sys.path:", sys.path)

 

3. 다시 module import

import openwakeword
import openwakeword.data
import openwakeword.utils
import openwakeword.metrics

 

 

 

 

반응형
Comments