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.)