Python 확장 작성
참고: VS Code 확장 작성에 처음이시라면, 먼저 첫 번째 확장 만들기 튜토리얼을 읽고 간단한 Hello World 확장을 만들어 보시는 것이 좋습니다.
The Python 확장 프로그램은 사용자의 컴퓨터에서 사용 가능한 Python 환경과 다른 확장 프로그램이 함께 작동할 수 있도록 API를 제공합니다. 확장 프로그램에서 이러한 API에 액세스하기 위한 유형 및 도우미 유틸리티를 포함하는 @vscode/python-extension npm 모듈을 확인하세요.
Python 확장 템플릿
The Python 확장 템플릿은 좋아하는 Python 도구에 대한 Visual Studio Code 확장을 구축하는 데 도움이 됩니다. 린터, 포맷터 또는 코드 분석 기능이거나 이 모든 기능을 함께 제공할 수 있습니다. 이 템플릿은 도구를 VS Code에 통합하는 확장을 구축하는 데 필요한 기본 빌딩 블록을 제공하며, 위에서 언급한 Python API에 이미 액세스할 수 있습니다.
프로그래밍 언어 및 프레임워크
확장 템플릿에는 확장 부분과 언어 서버 부분의 두 부분이 있습니다. 확장 부분은 TypeScript로 작성되었으며, 언어 서버 부분은 pygls(Python 언어 서버) 라이브러리를 사용하여 Python으로 작성되었습니다.
이 템플릿을 사용할 때 주로 코드의 Python 부분에서 작업하게 됩니다. Language Server Protocol을 사용하여 도구를 확장 부분과 통합합니다. pygls는 현재 LSP 버전 3.16에서 작동합니다.
TypeScript 부분은 VS Code 및 UI와의 작업을 처리합니다. 확장 템플릿에는 도구에서 사용할 수 있는 몇 가지 설정이 내장되어 있습니다. 도구를 지원하기 위해 새 설정을 추가해야 하는 경우 TypeScript를 조금 다루어야 합니다. 확장 템플릿에는 몇 가지 설정에 대한 예제가 포함되어 있으며, 인기 있는 도구에 대한 저희 팀에서 개발한 확장 프로그램도 참고할 수 있습니다.
요구 사항
- VS Code 1.64.0 이상
- Python 3.7 이상
- node >= 14.19.0
- npm >= 8.3.0 (
npm은 node와 함께 설치됩니다. npm 버전을 확인하고, 업데이트하려면npm install -g npm@8.3.0을 사용하세요) - VS Code용 Python 확장 프로그램
Python 가상 환경을 만들고 사용하는 방법을 알아야 합니다.
시작하기
시작하려면 템플릿 README의 지침을 따르세요. 여기에서 템플릿을 사용하여 저장소를 만드는 방법과 필요한 도구(예: nox 작업 실행기) 및 선택적 종속성(테스트 지원)을 설치하는 방법을 배울 수 있습니다.
The README에는 최신 지침이 포함되어 있으며 확장 프로그램의 package.json 자리 표시자(<pythontool-module>, <pythontool-display-name> 등)를 사용자 지정하는 방법에 대한 자세한 내용도 나와 있습니다.
템플릿 기능
템플릿을 통해 확장을 생성한 후에는 다음과 같은 확장 기여가 포함됩니다. <pytool-module>이 mytool로, <pytool-display-name>이 My Tool로 대체되었다고 가정합니다.
- My Tool: Restart Server 명령(명령 ID:
mytool.restart). - 다음 설정
mytool.logLevelmytool.argsmytool.pathmytool.importStrategymytool.interpretermytool.showNotification
- 확장 활성화 트리거:
- 언어
python시. - 열린 작업 영역에서
.py확장자를 가진 파일 시. - 명령
mytool.restart시.
- 언어
- 로깅을 위한 출력 채널 Output > My Tool.
도구 통합
생성된 bundled/tool/server.py 파일은 대부분의 변경 작업을 수행하는 곳입니다. 파일의 TODO 주석은 다양한 사용자 지정 지점을 나타냅니다. 템플릿의 다른 위치(예: 다른 Python 및 Markdown 파일)에 있는 TODO 주석도 검색하세요. MIT 라이선스를 유지하고 싶더라도 LICENSE 파일을 검토하는 것이 좋습니다.
예시
템플릿에서 생성된 몇 가지 예제 구현이 있습니다.
- Pylint - 파일
open,save및close시 린팅 및 코드 액션 구현. - Flake8 - 린팅 및 코드 액션 구현.
- Black Formatter - Black 포맷터 통합.
- autopep8 - autopep8 포맷터 통합.
- isort - import를 정렬하기 위한 코드 액션 추가.
pygls 언어 서버 통합을 더 잘 이해하기 위해 Language Server Protocol 사양을 검토할 수도 있습니다.
확장 개발
템플릿 README에는 템플릿에 포함된 개발 주기 지원에 대한 자세한 내용이 나와 있습니다. 템플릿에는 확장을 빌드, 실행, 디버그 및 테스트할 수 있는 명령과 구성이 있습니다.
개발 중에 문제가 발생하면 일반적인 문제를 해결하는 데 도움이 되는 문제 해결 섹션이 있습니다.
패키징 및 게시
확장을 게시하기 전에 특정 확장에 맞게 확장 package.json 필드(예: publisher 및 license)를 업데이트해야 합니다. 보조 Markdown 파일(CODE_OF_CONDUCT.md, CHANGELOG.md 등)도 업데이트하는 것이 좋습니다.
확장 프로그램 게시 준비가 되면 .vsix 파일을 만드는 nox build-package 작업이 있으며, 이 파일은 확장 프로그램 관리 페이지에 업로드할 수 있습니다.
VS Code 확장을 만들고 게시하는 데 처음이시라면, 주요 VS Code 확장 작성 주제에 요약된 모범 사례를 따르는 것이 좋습니다. 여기에서는 확장이 Marketplace에서 멋지게 보이도록 하는 방법과 사용자가 확장을 설치하는 데 확신을 가질 수 있도록 검증된 게시자가 되는 방법에 대한 지침을 찾을 수 있습니다.