기본적으로 Python의 module은 최초로 import될 때에만 수행이 됨.
- 때문에 Python session에서 특정 module을 import 하고 난 이후
- 해당 moduel에 수정사항이 발생할 경우,
- 해당 수정사항은 수행 중인 session에 반영되지 못함.
Module에 대한 이해가 부족할 경우 다음 글을 참고할 것.
https://dsaint31.me/mkdocs_site/python/basic/module_package/
BME228
Modules and Packages Module 쉽게 생각하면 Python code 로 구성된 file을 가르킨다. Module은 import될 때 각각 고유의 namespace를 가짐 (Namespace의 역할도 수행). Python에서 module은 확장자가 .py인 파일을 가르킴 (py
dsaint31.me
이같은 수정사항을 반영하기 위해서는 명시적으로 특정 module을 다시 reload시켜야 하며
이를 위해서 Python은 importlib
모듈의 reload
function을 제공함.
- 기존의 module의 namespace를 overwrite를 수행함 (inplace 변경임).
- reload는 python으로 작성된 module에서만 가능함.
- reload는 사용자가 만든 module에서만 가능함. Python이 자체 제공하는 module (e.g. math)에선 동작하지 않음.
- reload는 module 하나씩만 적용 가능함.
다음 예제를 통해 importlib
모듈의 reload
사용법을 확인하자.
다음의 echo.py
는 import되어 수행될 때와 main script로 동작할 때의 수행되는 code block이 다름.
#!/bin/env python
a = 'old'
# a = 'new'
if __name__ == '__main__':
print(f'main script : {__name__}')
else:
print(f'imported module : {__name__}')
print(f'a = {a}')
다음은 이를 import하고, importlib
모듈의 reload
함수를 통해 echo
모듈을 다시 초기화 수행을 하는 echo_test.py
파일임.
#!/bin/env python
import echo # import시 호출되는 code block 수행됨.
import echo # 아무 일 발생하지 않음. 이미 import된 터라.
input('edit echo.py and enter!') # echo.py의 a변수 주석을 수정하고 enter!
# # Python 3.0 ~ 3.4 이전
# import imp
# imp.reload(echo)
# Python 3.4 이후.
import importlib
importlib.reload(echo) # module variable을 반환함.
echo_test.py
를 main script로 수행하면 echo
모듈의 초기화에 의한 해당 메시지가 출력되고 사용자의 입력을 기다림.
이 상태에서 echo.py
를 열고, a = 'new'
부분의 주석을 해제하고 난 이후에 저장한 다음 echo_test.py
의 terminal에서 엔터를 입력하면 해당 수정사항이 반영된 것을 확인 가능함.
https://docs.python.org/ko/3/library/importlib.html
importlib — The implementation of import
Source code: Lib/importlib/__init__.py Introduction: The purpose of the importlib package is three-fold. One is to provide the implementation of the import statement (and thus, by extension, the__i...
docs.python.org
같이 읽어보면 좋은 자료들
2023.06.18 - [Programming] - [Python] Module Search Path and sys.path
[Python] Module Search Path and sys.path
1. Module Search Path Python 에서 module을 찾는 경로 (Module Search Path)는 다음의 순서별로 우선권을 가짐. home directory of the program (main script file이 있는 위치 or python shell이 수행된 cwd) PYTHONPATH 환경변수 (envi
dsaint31.tistory.com
'Programming' 카테고리의 다른 글
[Python] Assignment (Basic) (0) | 2023.06.20 |
---|---|
[Python] Module Search Path and sys.path (0) | 2023.06.18 |
[Python] Exception 처리 (0) | 2023.06.16 |
[Python] Strong Typing이란? with Object (1) | 2023.06.13 |
[Python] Variable (and Object) (0) | 2023.06.13 |