콘텐츠로 건너뛰기

파이썬에서 클릭하는 방법은?

[

Click 및 Python: 확장 가능하고 구성 가능한 CLI 앱 만들기

Leo Danis Pozo Ramos 2023년 8월 23일 작성 (devops, 중급, python, tools)

Click 라이브러리를 사용하여 Python 자동화 및 도구 스크립트에 확장 가능하고 구성 가능한 사용자 친화적인 명령 줄 인터페이스(CLI)를 빠르게 제공할 수 있습니다. 개발자, 데이터 과학자, DevOps 엔지니어 또는 반복적인 작업을 자동화하기 위해 자주 Python을 사용하는 사람 등 누구나 Click 및 그 독특한 기능을 매우 감사하게 받아들일 것입니다.

Python 생태계에서는 표준 라이브러리의 ‘argparse’, Typer 및 기타 몇 가지를 포함하여 CLI를 생성하기 위한 여러 라이브러리를 찾을 수 있습니다. 그러나 Click은 강력하고 성숙하며 직관적이며 기능이 풍부한 해결책을 제공합니다.

이 튜토리얼에서 다음을 배울 수 있습니다:

  • Click 및 Python을 사용하여 명령 줄 인터페이스(CLI) 만들기
  • CLI 앱에 아규먼트(Arguments), 옵션(Options)서브커맨드(Subcommands) 추가하기
  • Click을 사용하여 CLI 앱의 사용법(Usage)도움말 페이지(Help pages) 개선하기
  • Click CLI 앱을 설치, 사용배포할 수 있도록 준비하기

Click 및 Python을 사용하여 Command-Line Interfaces 만들기

Click(이곳)은 강력하고 성숙하며 직관적이며 기능이 풍부한 명령 줄 인터페이스(CLI)를 생성하는 데 사용하는 라이브러리입니다. Click을 사용하면 Python 응용 프로그램에 명령 줄 인터페이스를 빠르고 쉽게 추가할 수 있습니다. 명령 줄을 사용하여 프로그램의 동작을 제어하고 사용자와 상호 작용할 수 있게 됩니다.

이 튜토리얼에서는 Click을 사용하여 Python CLI 앱을 작성하는 방법에 대해 알아보겠습니다. 웹 개발, 데이터 분석, 자동화 등 다양한 용도로 널리 사용되는 Click을 통해 비즈니스 요구 사항에 맞게 자신만의 유연하고 신뢰할 수 있는 CLI 앱을 만들 수 있습니다.

CLI 개발을 위해 Click 사용하는 이유

Click은 Python에서 CLI 애플리케이션을 개발하기 위해 널리 사용되는 라이브러리입니다. Click을 사용하면 Python 애플리케이션에 명령 줄 인터페이스를 쉽게 추가할 수 있습니다. Click은 다음과 같은 유용한 기능을 제공합니다:

  • 부가적인 라이브러리나 외부 종속성 없이 Click을 사용하여 독립 실행형 Python 스크립트에 CLI를 간단하게 추가할 수 있습니다.
  • Click을 사용하면 다양한 명령과 옵션을 정의하고 유연하게 처리할 수 있습니다.
  • 사용자 지정 콜백 함수를 등록하여 클릭 이벤트를 처리하고 사용자에게 반응을 표시할 수 있습니다.
  • Click은 명령 줄 인터페이스의 제작 및 테스트에 대한 풍부한 지원과 함께 명령 줄 인터페이스 애플리케이션의 재미있고 인터랙티브한 기능을 추가하는 데 탁월한 기능을 제공합니다.

Click을 사용하면 명령 줄 인터페이스를 쉽고 효과적으로 작성할 수 있으며 Python 프로그램을 보다 유연하고 사용하기 쉬운 환경으로 변환할 수 있습니다. CLI 애플리케이션의 필수 기능을 Click 라이브러리로 구현하고 사용자의 요구에 맞게 필요한 경우 사용자 정의 기능을 추가할 수 있습니다.

Click 설치 및 설정: 첫 번째 CLI 앱

Python에서 CLI 애플리케이션을 개발하기 위해 Click 라이브러리를 사용할 준비가 되었습니다. 이제 Click을 설치하고 첫 번째 CLI 앱을 작성해 보겠습니다.

  1. 가상 환경 생성

Python 프로젝트를 관리하는 가상 환경을 작성하는 것이 좋습니다. Click과 같은 외부 패키지의 설치는 프로젝트 범위에서 가상 환경을 사용하면 프로젝트 및 시스템 라이브러리 사이의 충돌을 방지할 수 있습니다. 다음 명령을 사용하여 가상 환경을 작성합니다:

Terminal window
$ python3 -m venv myclickapp
  1. 가상 환경 활성화

가상 환경을 활성화합니다. 이렇게 하면 가상 환경에 설치된 패키지가 시스템에 설치된 패키지와 충돌하지 않도록 할 수 있습니다. 다음 명령을 실행하여 가상 환경을 활성화합니다:

Terminal window
$ source myclickapp/bin/activate
  1. Click 설치

가상 환경이 활성화된 상태에서 Click을 설치합니다. 다음 명령을 실행하여 Click을 설치합니다:

Terminal window
$ pip install click
  1. 첫 번째 CLI 앱 만들기

이제 Click을 사용하여 첫 번째 CLI 앱을 작성해 보겠습니다. CLI 앱은 Hello, World!와 같은 간단한 명령을 실행하고 사용자에게 결과를 표시하는 것입니다.

새 Python 파일을 생성하고 다음 코드를 입력합니다:

import click
@click.command()
def hello():
click.echo("Hello, World!")
if __name__ == '__main__':
hello()

안내 목적으로 코드를 설명하면 다음과 같습니다:

a. click.command() 데코레이터를 사용하여 hello 함수에 CLI 앱으로 사용할 수 있다는 것을 알립니다. b. click.echo() 함수를 사용하여 “Hello, World!”를 출력합니다.

  1. CLI 앱 실행

CLI 앱을 실행하려면 다음 명령을 실행합니다:

Terminal window
$ python myapp.py

결과로 “Hello, World!”가 터미널에 출력됩니다.

Click을 사용하여 간단한 CLI 앱을 만들었습니다. Click을 이용하면 쉽고 빠르게 Python CLI 앱을 작성할 수 있습니다.

Click 앱에 인자 추가하기

Click을 사용하면 CLI 앱에 인자를 추가하는 것이 매우 간단합니다. Click은 다양한 유형의 인자를 지원하며 사용자 정의 기능을 추가할 수 있습니다. 이 섹션에서는 Click을 사용하여 CLI 앱에 기본 인자, 패스 인자, 가변 인자, 파일 인자를 추가하는 방법에 대해 알아보겠습니다.

기본 인자 추가하기

CLI 앱에서는 기본값과 함께 인자를 정의할 수 있습니다. Click을 사용하면 프로그램에 필요한 기본 인자를 쉽게 추가할 수 있습니다. 다음은 Click을 사용하여 기본 인자를 추가하는 방법을 보여주는 예시입니다:

import click
@click.command()
@click.option('--name', default='World', help='The person to greet.')
def hello(name):
click.echo(f"Hello, {name}!")
if __name__ == '__main__':
hello()

안내 목적으로 코드를 설명하면 다음과 같습니다:

  1. click.option() 데코레이터를 사용하여 name이라는 기본 인자를 정의합니다. default 매개변수를 사용하여 이 인자가 기본값으로 ‘World’로 설정되도록 지정합니다.
  2. name 인자는 hello 함수에 전달되며, click.echo()를 사용하여 화면에 “Hello, [name]!” 형식의 메시지를 출력합니다.

CLI 앱을 실행하고 기본값을 변경하지 않은 경우 다음 명령을 실행합니다:

Terminal window
$ python myapp.py

결과로 “Hello, World!”가 터미널에 출력됩니다.

패스 인자 사용하기

Click을 사용하면 CLI 앱에 패스 인자를 추가할 수 있습니다. 패스 인자는 경로 또는 디렉토리 경로와 같은 값을 전달할 때 사용됩니다. 다음은 Click을 사용하여 패스 인자를 추가하는 방법을 보여주는 예시입니다:

import click
@click.command()
@click.argument('path')
def hello(path):
click.echo(f"Path: {path}")
if __name__ == '__main__':
hello()

안내 목적으로 코드를 설명하면 다음과 같습니다:

  1. click.argument() 데코레이터를 사용하여 path라는 패스 인자를 정의합니다.
  2. path 인자는 hello 함수에 전달되며, click.echo()를 사용하여 화면에 “Path: [path]” 형식의 메시지를 출력합니다.

CLI 앱을 실행하고 패스 인자로 원하는 값을 전달하면 해당 값이 출력됩니다. 예를 들어, 다음 명령을 실행합니다:

Terminal window
$ python myapp.py /home/user/Documents

결과로 “Path: /home/user/Documents”가 터미널에 출력됩니다.

… (계속)