Python VM (or Interpreter)
와의 상호작용 담당.
sys
모듈은
- interpreter에 의해 사용되거나 유지되는 variables 와
- interpreter와 밀접(interpreter 종료 등)하게 관련된 functions 에
대한 access를 제공함.
주로 많이 이용되는 attributes는 다음과 같음.
sys.argv
Python script에 command line을 통해 전달된 argument list.
argv[0]
: script file 이름.argv[1]
부터는 script file 명 다음에 전달된 argument임. 공백문자로 구분됨.
python -c
를 통해 python code가 주어진 경우에는argv[0]
가-c
임.
참고로 Unix의 경우, OS로부터 넘겨지는 command line arguements는 bytes임.
Python이 이를 file system의 encoding으로 decode하여 sys.argv
가 되기 때문에 원래의 bytes로 얻기위해선 [os.fsencode(arg) for arg in sys.argv]
와 같이 다시 file system의 encoding으로 encode가 필요함.
https://dsaint31.tistory.com/477
[Python] argparse 사용하기.
Python에서 기본적으로 제공하는 명령어 인자 파서 모듈이다. command line 으로 프로그램을 만들 때 기본적으로 필요하다. linux 쪽 경험이 풍부한 이들에겐 getopt가 보다 익숙하지만 그런 사람이면,
dsaint31.tistory.com
sys.executable
현재 수행되는 python interpreter의 executable binary의 absolute path를 나타내는 문자열.
(쉽게 말하면, python 명령의 절대 경로 임.)
해당 경로가 검색가능하지 않으면 None
혹은 empty string을 가짐.
https://dsaint31.tistory.com/330
[Python] 현재 사용 중인 Python 및 패키지의 실제 경로 확인하기.
LINUX which python 실행되는 Python의 경로를 보여줌. Python shell (패키지 및 python library위치) # 사용중인 python 경로 import sys print(sys.executable) # python library from distutils.sysconfig import get_python_lib print(get_python_
dsaint31.tistory.com
sys.exit([arg])
Python interpreter에게 종료를 지시한다.
(Python interactive shell에서는 exit()
를 이용)
주로 script에서 프로그램의 종료를 지시하기 위해 사용된다.
arg
는 일반적으로 문제 없이 종료했음을 나타내는0
임.- 다른 int 값인 경우엔 OS 에게 Python interpreter가 비정상종료임을 알려줌.
- Python interpreter종료 직후
echo $?
를 수행해서 확인 가능.
- Python interpreter종료 직후
- 단, 위와 같이 OS에게 알려주는 값은 시스템 레벨로 전달되는 것이라
try
및except
로 확인할 수 없음.
exit()
와 마찬가지로 SystemExit
exception을 발생시키는 건 같지만,
exit()
가 site-packages
에 기반하는 것과 달리
이는 sys
모듈에 있기 때문에 import sys
를 먼저 실행해야 한다.
주로 script나 python code에서 프로그램 종료를 위해 사용된다.
python -S
로 python interactive shell을 수행할 경우,site-packages
가 로드되지 않기 때문(-S 의 동작특성)에exit
를 호출시Not Defined NameError
가 뜬다.
하지만sys.exit
는 명시적으로import sys
를 하기때문에 해당 문제가 발생하지 않음.
넘겨지는 argument 에 대해선 다음을 참고하라.
[Py] sys.exit()
Python의 sys.exit() 는 소스코드 내에서 프로그램을 종료(=pvm종료)시키기 위해 호출하는 함수임.호출(call)할 때, 종료 상태 코드를 argument로 전달받음.해당 종료상태코드는 sys모듈을 통해 os로 넘어감
ds31x.tistory.com
sys.path
Python의 패키지 및 모듈의 경로들을 문자열로 가지고 있는 list.
- Python interpreter가 패키지나 모듈을 찾기 위한 참조 경로를 item으로 가짐.
아래의 sys.module과 함께 module search path를 관리하는 중요한 attributes임.
sys.module
Python interpreter가 현재 로딩한 모듈과 package를 저장하고 있는 dictionary.
1. import 문을 만나면 이 곳에 있는지를 확인하고
2. 없는 경우 builtins
와 sys.path
에서 대상 모듈을 찾아 로딩하고
3. 이를 sys.module
에 추가함.
모듈과 관련된 자세한 내용은 이 링크를 참고: https://dsaint31.tistory.com/528
[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
import sys
def show():
for idx,i in enumerate(sys.argv):
print(f'argv[{idx:02d}]: {i}')
print('\n---------------------\n')
print(f'{sys.executable = }')
print('\n---------------------\n')
for idx, i in enumerate(sys.path):
print(f'path[{idx:02d}]: {i}')
print('\n---------------------\n')
for idx, (key, v) in enumerate(sys.modules.items()):
if idx >5:
break
print(f'{idx:03d}: {key} = {v}')
if __name__ == "__main__":
show()
sys.exit(0)
References
https://docs.python.org/3/library/sys.html
sys — System-specific parameters and functions
This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter. It is always available. Citations C99, ISO/IEC 9899...
docs.python.org
https://ds31x.tistory.com/page/Python-Python-%EC%A0%95%EB%A6%AC
[Python] Python 정리
Programming Language and Python 소개2023.10.23 - [Python] - [Python] Programming Language and Introduction of Python. [Python] Programming Language and Introduction of Python.Computer and Program https://dsaint31.tistory.com/436 [CE] Computer and Progra
ds31x.tistory.com
'Python' 카테고리의 다른 글
[Python] 환경변수 접근하기 (2) | 2023.09.30 |
---|---|
[Colab] colab에서 ipynb 공유하기 (0) | 2023.09.26 |
[Pandas] Index 지정 관련 메서드 : reset_index, set_index (0) | 2023.09.20 |
[Python] IPython shell 에서 shell cmds 사용하기. (0) | 2023.09.19 |
[Python] else : break checker (0) | 2023.09.18 |