공부를 함시다/Python

파이썬 module을 다시 호출하려면... (importlib)

갈룩시노테7 2023. 10. 30. 14:20
반응형

파이썬을 사용하다가 문제가 되는 상황을 하나 마주했다.

 

# 파일1 test1

from test2 import *
import time

print(temp)
time.sleep(10)
print(temp)

# 파일2 test2

import datetime

temp = datetime.datetime.now()

 

바로 test1 상황에서 현재 시간을 출력하는 변수를 출력하고

10초 뒤, 다시 현재 시간을 나타내는 변수를 출력했을 경우 똑같은 값이 출력되는 것이다.

 

이 이유는 처음 import 시에는 module 내의 변수들을 초기화 한 뒤에 로드하지만,

그 다음부터는 이미 로드되어있는 module의 값들을 불러오기 때문에 값이 변경되지 않는 것이다.

 

그렇기에 여기서는 import 모듈을 다시 초기화하여 호출시키는 importlib를 이용하면 된다.

 

이러한 값 사용을 위해서는

import test # 불러올 모듈
import importlib

importlib.reload(test) # test 모듈을 다시 불러온다.

를 선언해주고, 마지막으로 from A import * 방식을 import A 방식으로 변경해준다.

 

따라서 위의 코드 방식을 아래와 같이 바꾸면 정상적으로 작동한다.

# 파일1 test1

import test2 as t
import time
import importlib

print(t.temp)
time.sleep(10)
importlib.reload(test2)
print(t.temp)

# 파일2 test2

import datetime

temp = datetime.datetime.now()
반응형