이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

Visual Studio Code에서 Python 편집

Visual Studio Code는 Python 소스 코드를 위한 강력한 편집 도구입니다. 이 편집기는 코드를 작성할 때 생산성을 높이는 데 도움이 되는 다양한 기능을 포함하고 있습니다. Visual Studio Code에서의 편집에 대한 자세한 내용은 기본 편집코드 탐색을 참조하세요.

이 개요에서는 Python 확장에서 제공하는 특정 편집 기능에 대해 설명하고, 사용자 및 작업 영역 설정을 통해 이러한 기능을 사용자 지정하는 방법에 대한 단계도 설명합니다.

자동 완성 및 IntelliSense

IntelliSense는 코드 완성에 관련된 코드 편집 기능을 통칭하는 용어입니다. 잠시 시간을 내어 아래 예시를 살펴보세요. print를 입력하면 IntelliSense가 자동 완성 옵션을 어떻게 채우는지 확인해 보세요. 사용자는 greeting이라는 변수 이름 입력을 시작할 때도 옵션 목록이 제공됩니다.

Hello World Example for IntelliSense

자동 완성 및 IntelliSense는 현재 작업 중인 폴더 내의 모든 파일에 대해 제공됩니다. 또한 표준 위치에 설치된 Python 패키지에 대해서도 사용할 수 있습니다.

Pylance는 VS Code에서 Python의 기본 언어 서버이며, IntelliSense 기능을 제공하기 위해 Python 확장과 함께 설치됩니다.

Pylance는 Microsoft의 Pyright 정적 형식 검사 도구를 기반으로 하며, 타입 스텁(.pyi 파일)과 지연 타입 추론을 활용하여 고성능 개발 환경을 제공합니다.

IntelliSense에 대한 일반적인 내용은 IntelliSense를 참조하세요.

: IntelliCode for VS Code 확장을 확인해 보세요. IntelliCode는 Python의 IntelliSense를 위한 AI 기반 기능 세트를 제공하며, 현재 코드 컨텍스트를 기반으로 가장 관련성이 높은 자동 완성을 추론합니다. 자세한 내용은 IntelliCode for VS Code FAQ를 참조하세요.

IntelliSense 동작 사용자 지정

기본적으로 IntelliSense 기능 전체를 사용하도록 설정하면 개발 경험이 느려질 수 있으므로 Python 확장은 생산성을 유지하면서도 성능을 유지할 수 있는 최소한의 기능 세트를 활성화합니다. 그러나 여러 설정을 통해 분석 엔진의 동작을 원하는 대로 사용자 지정할 수 있습니다.

자동 가져오기 활성화

Pylance는 작업 영역의 모듈 및 환경에 설치된 패키지에 대한 자동 가져오기 제안을 제공합니다. 편집기에서 입력하면 완성 제안을 받을 수 있습니다. 제안을 수락하면 자동 가져오기가 해당 가져오기 문을 파일에 자동으로 추가합니다.

설정에서 python.analysis.autoImportCompletionstrue로 설정하여 자동 가져오기를 활성화할 수 있습니다. 기본적으로 자동 가져오기는 비활성화되어 있습니다.

Completion with auto import displayed on the suggestion list

사용자 지정 패키지 위치에 대한 IntelliSense 활성화

표준이 아닌 위치에 설치된 패키지에 대한 IntelliSense를 활성화하려면 settings.json 파일의 python.analysis.extraPaths 컬렉션에 해당 위치를 추가하세요(기본 컬렉션은 비어 있음). 예를 들어, Flask를 사용하는 경우 app.yaml에 지정된 대로 Google App Engine이 사용자 지정 위치에 설치되어 있을 수 있습니다. 이 경우 해당 위치는 다음과 같이 지정합니다.

Windows

"python.analysis.extraPaths": [
    "C:/Program Files (x86)/Google/google_appengine",
    "C:/Program Files (x86)/Google/google_appengine/lib/flask-0.12"]

macOS/Linux

"python.analysis.extraPaths": [
    "~/.local/lib/Google/google_appengine",
    "~/.local/lib/Google/google_appengine/lib/flask-0.12" ]

사용 가능한 IntelliSense 컨트롤의 전체 목록은 Python 확장 코드 분석 설정자동 완성 설정을 참조하세요.

자동 완성 및 IntelliSense의 일반적인 동작을 사용자 지정하거나 기능을 완전히 비활성화할 수도 있습니다. IntelliSense 사용자 지정에서 자세히 알아볼 수 있습니다.

AI로 완성도 향상

GitHub Copilot은 코드를 더 빠르고 스마트하게 작성하도록 도와주는 AI 기반 코드 완성 도구입니다. VS Code의 GitHub Copilot 확장을 사용하여 코드를 생성하거나 생성된 코드를 통해 배울 수 있습니다.

GitHub Copilot extension in the VS Code Marketplace

GitHub Copilot은 수많은 언어와 다양한 프레임워크에 대한 제안을 제공하며, 특히 Python, JavaScript, TypeScript, Ruby, Go, C# 및 C++에서 잘 작동합니다.

Copilot 시작 방법에 대한 자세한 내용은 Copilot 설명서에서 확인할 수 있습니다.

탐색

편집 중 다양한 식별자를 마우스 오른쪽 버튼으로 클릭하여 여러 가지 편리한 명령을 활용할 수 있습니다.

  • 정의로 이동(F12)은 코드를 정의하는 코드로 점프합니다. 이 명령은 라이브러리를 작업할 때 유용합니다.

  • 정의 미리보기(⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10))도 비슷하지만, 정의를 편집기에서 직접 표시합니다(편집기 창에서 공간을 확보하여 코드를 가리지 않음). 미리보기 창을 닫으려면 Esc를 누르거나 오른쪽 상단의 x를 사용하세요.

  • 선언으로 이동은 변수 또는 다른 개체가 코드에서 선언된 지점으로 이동합니다.

  • 선언 미리보기도 비슷하지만, 선언을 편집기에서 직접 표시합니다. 미리보기 창을 닫으려면 다시 Esc 또는 오른쪽 상단의 x를 사용하세요.

빠른 수정

가져오기 추가

Pylance를 사용할 때, "가져오기 추가" 빠른 수정 기능을 사용하면 환경에 설치된 모듈에 대한 가져오기 문을 빠르게 완성할 수 있습니다. 편집기에서 패키지 이름을 입력하기 시작하면 코드 액션을 통해 자동으로 소스 코드 줄을 완성할 수 있습니다. 텍스트(물결 표시로 표시됨) 위로 마우스를 가져가 코드 액션 전구 아이콘을 선택합니다. 그러면 잠재적 가져오기 목록에서 선택할 수 있습니다.

Add import code action

이 코드 액션은 다음 일반 Python 패키지의 인기 있는 약어도 인식합니다. numpy(np), tensorflow(tf), pandas(pd), matplotlib.pyplot(plt), matplotlib(mpl), math(m), scipi.io(spio), scipy(sp), panel(pn), holoviews(hv).

Common package abbreviations

가져오기 제안 목록에는 가장 최근에 사용된 가져오기, 동일한 모듈의 기호, 표준 라이브러리의 기호, 사용자 모듈의 기호, 타사 패키지의 기호를 기준으로 우선 순위가 지정된 상위 3가지 고신뢰도 가져오기 옵션이 표시되며, 마지막으로 모듈 및 기호 이름별로 정렬됩니다.

추가 가져오기 일치 항목 검색

기본적으로 "가져오기 추가" 빠른 수정은 3가지 고신뢰도 가져오기 옵션만 표시합니다. 원하는 항목이 목록에 없으면 Pylance의 추가 가져오기 일치 항목 검색 빠른 수정 기능을 누락된 가져오기 오류에 사용할 수 있습니다. 이 빠른 수정은 누락된 가져오기 기호와 접두사 일치를 수행하는 가져오기 옵션을 검색할 수 있는 빠른 선택 메뉴를 표시합니다.

Search for additional import matches Code Action

철자 변경

Pylance는 해결되지 않은 변수 또는 누락된 가져오기 진단에 대해 오타로 인해 발생할 가능성이 있는 경우 철자 변경 빠른 수정을 표시합니다. 이 코드 액션은 작업 영역에서 찾은 가장 가까운 일치 항목을 기반으로 기호의 올바른 철자를 제안합니다.

Change spelling code action on missing import due to a typo

참고: 사용자 기호의 경우 이러한 빠른 수정은 해당 기호가 정의된 파일에서만 가져오기를 제안합니다. 사용자 기호가 외부/가져온 파일에서 오는 가져오기는 지원되지 않습니다.

또한 설치된 패키지(일반적으로 Python 환경의 site-packages 폴더 아래에 위치)에서 오는 기호의 경우, 패키지 루트 폴더(예: __init__.py 파일)에 정의된 것만 이러한 빠른 수정에서 제안된다는 점에 유의하세요. python.analysis.packageIndexDepths 설정을 통해 특정 패키지의 동작을 사용자 지정할 수 있지만, Pylance 성능에 영향을 줄 수 있다는 점에 유의하세요.

리팩토링

Python 확장은 Pylance 확장을 통해 변수 추출, 메서드 추출, 모듈 이름 바꾸기, 기호 이동상속된 모든 추상 클래스 구현과 같은 리팩토링 기능을 추가합니다. 또한 가져오기 정렬과 같은 추가 리팩토링 기능을 구현하는 확장을 지원합니다.

변수 추출

현재 범위 내의 선택된 텍스트의 모든 유사한 발생을 추출하고 새 변수로 바꿉니다.

변수로 추출하려는 코드 줄을 선택하여 이 명령을 호출할 수 있습니다. 그런 다음 해당 줄 옆에 표시되는 전구 아이콘을 선택합니다.

Refactoring a variable

메서드 추출

현재 범위 내의 선택된 표현식 또는 블록의 모든 유사한 발생을 추출하고 메서드 호출로 바꿉니다.

메서드로 추출하려는 코드 줄을 선택하여 이 명령을 호출할 수 있습니다. 그런 다음 해당 줄 옆에 표시되는 전구 아이콘을 선택합니다.

Refactoring code into a method

모듈 이름 바꾸기

Python 파일/모듈의 이름을 바꾼 후 Pylance는 업데이트해야 할 수 있는 모든 참조를 찾고 모든 변경 사항을 미리 볼 수 있습니다.

업데이트해야 하는 참조를 사용자 지정하려면 리팩토링 미리보기에서 줄 또는 파일 수준의 확인란을 토글할 수 있습니다. 선택을 마치면 리팩토링 적용 또는 리팩토링 취소를 선택할 수 있습니다.

Renaming a module

기호 이동

Pylance 확장은 기호를 다른 파일로 이동하는 프로세스를 단순화하는 두 가지 코드 액션을 제공합니다.

  • 기호를 ...으로 이동: 기호를 이동할 대상 파일을 선택하는 파일 선택기를 표시합니다.
  • 기호를 새 파일로 이동: 코드 액션이 호출된 소스 파일과 동일한 디렉터리에 있는 기호 이름으로 새 파일을 만듭니다.

이러한 코드 액션은 이동하려는 기호 위로 마우스를 가져간 다음 원하는 액션 옆에 나타나는 전구 아이콘을 선택하여 액세스할 수 있습니다. 또는 기호를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 리팩토링...을 선택할 수도 있습니다.

Move Symbol refactoring options

상속된 모든 추상 클래스 구현

Python에서 추상 클래스는 다른 클래스의 "청사진" 역할을 하며, 명확한 구조와 서브 클래스가 따라야 할 요구 사항을 촉진하여 모듈화되고 재사용 가능한 코드를 구축하는 데 도움이 됩니다. Python에서 추상 클래스를 정의하려면 abc 모듈의 ABC 클래스를 상속하는 클래스를 만들고 해당 메서드를 @abstractmethod 데코레이터로 주석 처리하면 됩니다. 그런 다음 이 추상 클래스를 상속하는 새 클래스를 만들고 기본 메서드에 대한 구현을 정의할 수 있습니다.

Pylance는 이러한 클래스를 만드는 프로세스를 단순화하는 코드 액션을 제공합니다. 추상 클래스를 상속하는 새 클래스를 정의할 때 이제 상속된 모든 추상 클래스 구현 코드 액션을 사용하여 부모 클래스의 모든 추상 메서드 및 속성을 자동으로 구현할 수 있습니다.

Implement inherited abstract classes

가져오기 정렬

Python 확장은 가져오기 정렬 기능을 구현하는 isortRuff와 같은 확장을 지원합니다. 이 명령은 동일한 모듈의 특정 가져오기를 단일 import 문으로 통합하고 import 문을 알파벳순으로 정렬합니다.

가져오기 정렬을 지원하는 확장을 설치한 다음 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))를 열고 가져오기 정리를 실행하여 이를 호출할 수 있습니다.

: editor.action.organizeImports 명령에 키보드 바로 가기를 할당할 수 있습니다.

Sorting import statements

문제 해결

일반적인 IntelliSense 및 Python 편집 문제에 대한 도움말은 아래 표를 확인하세요.

문제 원인 해결책
Pylance가 가져오기 추가 시 최상위 수준 기호 옵션만 제공합니다. 기본적으로 최상위 수준 모듈만 인덱싱됩니다(깊이=1).
예를 들어, 기본적으로 import matplotlib은 제안으로 표시될 수 있지만 import matplotlib.pyplot은 표시되지 않습니다.
python.analysis.packageIndexDepths를 통해 Pylance가 설치된 라이브러리를 인덱싱하는 깊이를 늘려보세요. 코드 분석 설정을 확인하세요.
Pylance가 누락된 가져오기를 자동으로 추가하지 않습니다. 자동 가져오기 완성 설정이 비활성화되었을 수 있습니다. 자동 가져오기 활성화 섹션을 확인하세요.
자동 가져오기는 활성화되어 있지만 Pylance가 작업 영역의 다른 파일에 정의된 기호를 자동으로 가져오지 않습니다. 사용자 정의 기호(설치된 패키지 또는 라이브러리에서 가져오지 않은 기호)는 편집기에서 열린 파일에서 이미 사용된 경우에만 자동으로 가져옵니다.
그렇지 않으면 가져오기 빠른 수정 추가를 통해서만 사용할 수 있습니다.
가져오기 빠른 수정 추가를 사용하거나, 먼저 작업 영역의 관련 파일을 열도록 하세요.
Pylance가 느리거나 대규모 작업 영역에서 너무 많은 메모리를 소모하는 것 같습니다. Pylance 분석은 주어진 작업 영역의 모든 파일에서 수행됩니다. Pylance 분석에서 제외할 수 있다고 알고 있는 하위 폴더가 있는 경우, 해당 경로를 python.analysis.exclude 설정에 추가할 수 있습니다. 또는 python.analysis.indexingfalse로 설정하여 Pylance의 인덱서를 비활성화할 수 있습니다(참고: 이렇게 하면 완성 및 자동 가져오기 환경에도 영향을 미칩니다. 인덱싱에 대한 자세한 내용은 코드 분석 설정에서 확인할 수 있습니다.).
Python 프로젝트에 사용자 지정 모듈을 설치할 수 없습니다. 사용자 지정 모듈이 표준이 아닌 위치에 있습니다(pip를 사용하여 설치되지 않음). 위치를 python.autoComplete.extraPaths 설정에 추가하고 VS Code를 다시 시작하세요.

Pylance 진단

Pylance는 기본적으로 "문제" 패널에서 Python 파일에 대한 진단을 제공합니다.

아래 목록은 Pylance에서 제공하는 가장 일반적인 진단 중 일부와 이를 해결하는 방법입니다.

importResolveSourceFailure

이 오류는 Pylance가 가져온 패키지에 대한 타입 스텁을 찾을 수 있지만 패키트 자체를 찾을 수 없을 때 발생합니다. 가져오려고 하는 패키지가 선택한 Python 환경에 설치되지 않은 경우 발생할 수 있습니다.

해결 방법

  • 패키지가 다른 인터프리터 또는 커널에 이미 설치되어 있으면 올바른 인터프리터 선택을 참조하세요.
  • 패키지가 설치되지 않은 경우, 활성화된 터미널에서 다음 명령을 실행하여 설치할 수 있습니다: python -m pip install {package_name}.

importResolveFailure

이 오류는 Pylance가 가져오는 패키지 또는 모듈과 해당 타입 스텁을 찾을 수 없을 때 발생합니다.

해결 방법

  • 모듈을 가져오는 경우, 작업 영역에 있거나 python.autoComplete.extraPaths 설정에 포함된 위치에 있는지 확인하세요.
  • 설치되지 않은 패키지를 가져오는 경우, 활성화된 터미널에서 다음 명령을 실행하여 설치할 수 있습니다: python -m pip install {package_name}.
  • 다른 인터프리터 또는 커널에 이미 설치된 패키지를 가져오는 경우, 올바른 인터프리터 선택을 참조하세요.
  • 편집 가능한 설치를 사용 중이고 현재 임포트 훅을 사용하도록 설정된 경우, 호환성을 높이고 더 원활한 임포트 동작을 보장하기 위해 파일 경로만 포함하는 .pth 파일을 대신 사용하는 것을 고려해 보세요. 자세한 내용은 Pyright 설명서를 참조하세요.

importCycleDetected

이 오류는 Pylance가 두 개 이상의 모듈 간의 순환 종속성을 감지할 때 발생합니다.

해결 방법

순환 종속성을 끊기 위해 가져오기 문을 다시 정렬해 보세요.


Pylance 진단의 심각도는 python.analysis.diagnosticSeverityOverrides 설정을 통해 사용자 지정할 수 있습니다. 자세한 내용은 설정 참조를 확인하세요.

다음 단계

  • 린팅 - 다양한 Python 린터를 활성화, 구성 및 적용합니다.
  • 디버깅 - 로컬 및 원격 Python 디버깅 방법을 알아봅니다.
  • 테스트 - 테스트 환경을 구성하고 테스트를 검색, 실행 및 디버그합니다.
  • 기본 편집 - 강력한 VS Code 편집기에 대해 알아보세요.
  • 코드 탐색 - 소스 코드를 빠르게 이동합니다.
  • IntelliSense - IntelliSense 기능에 대해 알아봅니다.
  • Jupyter 지원 - Jupyter Notebook 시작 방법을 알아봅니다.
  • Python 확장 템플릿 - 좋아하는 Python 도구를 통합하는 확장을 만듭니다.
© . This site is unofficial and not affiliated with Microsoft.