주피터 노트북은 웹 기반 인터페이스에서 실행되며, 일반적인 명령줄 환경과는 다름.
노트북 환경은 사용자가 직접 명령줄 인자를 입력할 수 있는 방식으로 설계되지 않았다.
대신 Jupyer notebook 은 sys.argv 와 같은 명령줄 인자를 자동으로 설정해줌.
이로 인해 사용자가 의도한 명령줄 인자를 직접 전달하기 어렵다. (하지만 일반 파이썬 환경에서는 명령줄 인자를 직접 전달하고 파싱할 수 있다.)
argparse 라이브러리는 기본적으로 sys.argv를 파싱해서 사용한다.
주피터 환경에서는 이 sys.argv가 이미 노트북 실행을 위한 인자들로 채워져 있어, 사용자가 의도한 인자를 파싱할 수 없게 됨.
이러한 특성들로 인해, 주피터 환경에서 argparse를 일반적인 방식으로 사용하려고 하면 "unrecognized arguments" 오류가 발생하거나, 예상치 못한 동작을 하게 된다.
이를 해결하는 방법은 다양하다.
- sys.argv를 직접 수정하는 방법
import sys
sys.argv = [sys.argv[0]] # 명령줄 인자를 초기화
- 주피터 노트북에서 직접 값을 설정하는 방법:
class Args:
def __init__(self):
self.q = 'Google'
self.max_results = 25
args = Args()
'Programming Language > Python' 카테고리의 다른 글
pytest 기본 사용법 정리 (0) | 2025.02.07 |
---|---|
제너레이터(generator) (0) | 2025.02.07 |
Asyncio 와 Aiohttp 정리 (0) | 2024.08.14 |
yield 에 대해서 (0) | 2024.08.06 |
언패킹 (Unpacking) (0) | 2024.07.10 |