[Python] 서버 동작시 다른 파일 dynamic하게 import하기
2025. 3. 17. 23:02ㆍDevelopers 공간 [Shorts]/Software Basic
728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew,
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter
- Module Bundler : React, Webpack, Parcel
B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS
C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight
1. What? (현상)
이번 글에서는 Python을 활용한 서버에서 특정 python 파일이 실시간으로 바뀔때, dynamic하게 import하는 방법을 정리하고자 합니다.
보통 테스트 서버를 돌리는 상황에서, 서버가 가동 시작하는 시간이 오래 걸려 껐다 켰다하기 어려운 상황에서 활용합니다.
매번 수정하고 껐다 키는 디버깅이 필요할때는 이렇게 dynamic하게 import하도록 하면 디버깅이 쉽겠죠.
2. Why? (원인)
- X
3. How? (해결책)
기존에 아래와 같이 특정함수를 import했다고 가정하겠습니다. my_file.py라는 파일 내의 my_function()을 import했습니다.
def generate_fn(self): from . import my_file return my_file.my_function
위 함수는 아래와 같은 간단한 thread에서 불려 사용된다고 가정하겠습니다.
디버깅을 하려면 try-except 처리를 해주어야 하겠죠.
import threading class My_Thread(threading.Thread): def __init__(self): super(My_Thread, self).__init__() def run(self): while True : generate_fn = self.generate_fn() try : result = generate_fn() except Exception as e: print(e) thread = My_Thread() thread.start()
이때 위 함수를 아래와 같이 바꾸어주면 dynamic하게 import할 수 있습니다.
즉, sys내부에 이미 로드된 파일을 다시 로드한뒤, import해주는 것이죠.
import importlib import sys def generate_fn(self): importlib.reload(sys.modules[__package__+".my_file"]) from . import my_file return my_file.my_function
728x90
반응형
'Developers 공간 [Shorts] > Software Basic' 카테고리의 다른 글
[Bash] Rsync활용하기 (0) | 2025.03.17 |
---|---|
[Git] Feature 브랜치에서 master 관리자의 작업파일로 대체하기 (0) | 2025.03.17 |
[Python] 간단한 Web Crawling 하기 (0) | 2024.12.18 |
[Python] 객체 데이터 저장하고 불러오기 (0) | 2024.11.20 |
[Ubuntu] Ubuntu로 멀티부팅 만들기 (0) | 2024.11.18 |