VSCode + Pipenv로 Python Invoke 디버깅
TL;DR
pipenv run which invoke의 결과를 launch.json의 program로 지정개요
빨리 CLI 도구를 만들 때 파이썬 + Invoke가 유용합니다.
Invoke를 설명하는 많은 기사가 있으므로이 기사에서는 생략합니다.
이 기사에서는 VSCode에서 Invoke를 사용하여 개발할 때 디버깅하는 방법을 설명합니다.
환경
코드는 Github에 있습니다.
디버깅 대상 코드
디버그 대상으로 피보나치 수의 계산 프로그램을 준비했습니다.
num에서 받은 피보나치 수를 반환합니다.tasks.py
#!/usr/bin/env python
from invoke import task
@task
def fibonacci(c, num):
n = int(num)
if n < 0:
print("[Error]: num must be natural number or 0.")
exit(1)
print(calculate_fibonacci(n))
def calculate_fibonacci(num: int) -> int:
if num < 0:
raise ValueError("num must not be negative.")
if num == 0:
return 0
if num == 1:
return 1
n_2 = 0 # fib[n-2]
n_1 = 1 # fib[n-1]
n = 1 # fib[n]
for _ in range(1, num):
n = n_2 + n_1
n_2 = n_1
n_1 = n
return n
또한 다음 명령으로 가상 환경을 만들고 invoke를 설치했습니다.
$ cd path/to/project
$ pipenv --python 3.7
$ pip install invoke
VSCode 설정
가상 환경
Pipfile가 있는 디렉토리에서 code .를 실행하면 VSCode가 자동으로 가상 환경을 인식합니다.
디버깅
Debug -> Configure or Fix
launch.json에서 디버그 환경 설정을 엽니다.
launch.json의 .configurations[]에 디버그 설정을 추가합니다.이번에는
invoke fibonacci --num 10를 디버그 실행하도록 설정합니다.invoke를 사용하는 프로그램은 tasks.py를 python 명령으로 직접 시작하지 않고 invoke 명령으로 시작합니다.따라서 디버거에 지정하는 프로그램 파일은
tasks.py 대신 invoke 자체가 됩니다.invoke 명령 자체는 Python 프로그램입니다.invoke 자신은 가상 환경에서 관리되므로 다음 명령으로 검색합니다.$ pipenv run which invoke
이 결과를
launch.json의 program로 지정하면 디버깅이 가능합니다.{
"name": "Python: Debug invoke fibonacci --num 10",
"type": "python",
"request": "launch",
"program": "path/to/invoke", // `pipenv run which invoke` の結果を挿入
"console": "integratedTerminal",
"args": ["fibonacci", "--num", "10"]
}

이제 Invoke를 사용하는 프로그램도 VSCode에서 디버깅할 수 있습니다.
요약
이번에는 Invoke를 사용한 프로그램을 VSCode로 디버깅하는 방법을 소개했습니다.
Invoke 에 한정하지 않고 엔트리 포인트를 랩 하는 종의 라이브러리도 같은 방법으로 디버그 실행 가능하게 됩니다.
Reference
이 문제에 관하여(VSCode + Pipenv로 Python Invoke 디버깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lasta/items/9b5d8df30f0da3d3eff6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)