command line argument(주로 click)을 활용하는 py파일을 notebook 내에서 실행하는 방법

temp·2021년 11월 27일
0

Python

목록 보기
1/2

아래의 방법을 활용하기 전에, Command Line IPython 인터프리터py(Script) 인터프리터는 작동방식이 다릅니다.

그렇기 때문에 커맨드 라인 환경에서는 잘 작동해도, py파일을 직접 실행시킬 땐 작동하지 않을 수 있습니다(주로 함수 호출할 때).

import error: no module named omegaconf

이럴 때는 단순하게 다시 그냥 주피터 노트북에서

>>> !pip install omegaconf

를 실행해주면 되긴 합니다만, 그냥 방법을 못 찾아서 위와 같은 방식으로 경로를 다시 잡아주는 것 뿐입니다(임시 방편).


'!' 활용

가령, cmd창에서 py파일을

python demo.py single --config-path configs/cocostuff164k.yaml 
--model_path ... 

로 실행해야 한다면,

주피터 노트북에서는

>>> !python demo.py single --config-path configs/cocostuff164k.yaml 
--model_path ...

로 실행해주면 됩니다.

'%%python' 활용

Python처리를 위해 magic command %%python을 활용하면 됩니다.

가령,

python hello.py hello --name Max --count 3

을 실행시켜야 할 경우,

%%python

import sys
import click

@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
            help='The person to greet.')
def hello(count, name):
    """Simple program that greets NAME for a total of COUNT times."""
    with open('echo.txt', 'w') as fobj:
        for x in range(count):
            click.echo('Hello %s!' % name)

if __name__ == '__main__':
    # first element is the script name, use empty string instead
    sys.argv = ['', '--name', 'Max', '--count', '3']
    hello()

출처 : https://stackoverflow.com/questions/47820040/using-click-library-in-jupyter-notebook-cell

argparse

parser = argparse.ArgumentParser()
parser.add_argument('--dataset', default='Video', type=str)
parser.add_argument('--train_dir', default='train', type=str)
parser.add_argument('--batch_size', default=128, type=int)
parser.add_argument('--lr', default=0.001, type=float)
parser.add_argument('--maxlen', default=50, type=int)
parser.add_argument('--hidden_units', default=50, type=int)
parser.add_argument('--num_blocks', default=2, type=int)
parser.add_argument('--num_epochs', default=201, type=int)
parser.add_argument('--num_heads', default=1, type=int)
parser.add_argument('--dropout_rate', default=0.5, type=float)
parser.add_argument('--l2_emb', default=0.0, type=float)

# args = parser.parse_args() > 기존(cmd)
args = parser.parse_args(args=[]) > 변경(notebook)

참고 : https://velog.io/@yeong95/Jupyter-notebook%EC%97%90%EC%84%9C-argparse-%EC%9D%B4%EC%9A%A9%ED%95%98%EA%B8%B0

0개의 댓글