본문으로 건너뛰기

Python 설정 참조

Visual Studio Code용 Python 확장은 매우 구성 가능하다. 이 페이지에서는 작업할 수 있는 주요 설정을 설명한다.

VS Code에서 설정 작업에 대한 일반 정보는 사용자 및 작업 공간 설정와 미리 정의된 변수 지원에 대한 정보는 변수 참조를 참조하라.

일반 Python 설정

디버거 설정

일반 디버깅

설정
(python.debugpy.)
기본값설명참조
debugJustMyCodetrue디버거가 사용자 작성 코드만 단계별로 실행할지를 지정합니다. 비활성화하면 라이브러리 코드도 단계별로 실행할 수 있습니다.디버깅

테스트 설정

일반 테스트

설정
(python.testing.)
기본값설명참조
autoTestDiscoverOnSaveEnabledtrue테스트 파일을 저장할 때 자동으로 테스트 검색을 실행할지를 지정합니다.테스트
cwdnull테스트를 위한 선택적 작업 디렉토리를 지정합니다.테스트
debugPort3000unittest 테스트의 디버깅에 사용되는 포트 번호입니다.테스트
promptToConfiguretrue잠재적인 테스트가 발견되면 VS Code가 테스트 프레임워크를 구성하라는 메시지를 표시할지를 지정합니다.테스트

unittest 프레임워크

설정
(python.testing.)
기본값설명참조
unittestArgs["-v", "-s", ".", "-p", "*test*.py"]unittest에 전달할 인수로, 공백으로 구분된 각 최상위 요소는 목록의 개별 항목입니다.테스트
unittestEnabledfalseunittest가 테스트를 위해 활성화되어 있는지를 지정합니다.테스트

pytest 프레임워크

설정
(python.testing.)
기본값설명참조
pytestArgs[]pytest에 전달할 인수로, 공백으로 구분된 각 최상위 요소는 목록의 개별 항목입니다. pytest-cov가 설치된 상태에서 테스트를 디버깅할 때는 이러한 인수에 --no-cov를 포함해야 합니다.테스트
pytestEnabledfalsepytest가 테스트를 위해 활성화되어 있는지를 지정합니다.테스트
pytestPath"pytest"pytest의 경로입니다. pytest가 현재 환경 외부에 있는 경우 전체 경로를 사용하십시오.테스트

코드 분석 설정

IntelliSense 엔진 설정

참고: 언어 서버 설정을 변경한 적이 없다면 언어 서버는 “기본값” 설정 값에 따라 Pylance로 설정됩니다.

설정
(python.)
기본값설명
languageServerDefault언어 서버의 유형을 정의합니다 (Default, Pylance, Jedi, None).

Python 언어 서버 설정

Pylance 언어 서버

언어 서버 설정은 python.languageServerPylance 또는 Default일 때 적용됩니다. 언어 서버에 문제가 있는 경우 언어 서버 저장소의 문제 해결을 참조하십시오.

설정
(python.analysis.)
기본값설명
aiCodeActionstrue특정 AI 지원 코드 작업을 활성화할지를 지정합니다. GitHub Copilot Chat 확장을 활성화해야 합니다.
허용되는 값은 코드 작업을 키로 하고 부울을 값으로 하는 객체입니다.
키로 사용할 수 있는 코드 작업:
  • implementAbstractClasses: AI 제안을 사용하여 추상 클래스에서 상속된 클래스의 메서드를 구현하는 코드 작업을 활성화합니다.
사용 예: {"implementAbstractClasses": true}
autoFormatStringsfalse문자열 내에서 "{"를 입력할 때 자동으로 "f"로 접두사를 추가할지를 지정합니다.
autoImportCompletionsfalse완성에서 자동 가져오기를 제공할지를 제어합니다. 허용되는 값은 truefalse입니다.
autoIndenttruePython 코드를 입력할 때 언어 의미에 따라 자동으로 들여쓰기를 조정할지를 지정합니다.
허용되는 값은 true 또는 false입니다.
autoSearchPathstrue일부 미리 정의된 이름(예: src)에 따라 자동으로 검색 경로를 추가할지를 나타냅니다. 허용되는 값은 truefalse입니다.
completeFunctionParensfalse함수 완성에 괄호를 추가할지를 지정합니다. 허용되는 값은 truefalse입니다.
diagnosticModeopenFilesOnly언어 서버가 문제를 분석할 코드 파일을 지정합니다.
허용되는 값은 workspaceopenFilesOnly입니다.
diagnosticSeverityOverrides개별 진단에 대한 심각도 수준을 사용자 정의할 수 있습니다.
각 규칙에 대해 사용 가능한 심각도 수준은 error (빨간 물결선), warning (노란 물결선), information (파란 물결선), 및 none (규칙 비활성화)입니다.
진단 심각도 규칙에 사용할 키에 대한 정보는 아래의 진단 심각도 규칙 섹션을 참조하십시오.
exclude[]분석에 포함되지 않아야 하는 디렉토리 또는 파일의 경로입니다.
이는 python.analysis.include 설정 아래에 나열된 디렉토리를 무시하며, 특정 하위 디렉토리를 제외할 수 있습니다.
exclude 설정에 나열된 파일은 제외 목록에 없는 소스 파일에 의해 참조/가져오기가 이루어질 경우 여전히 분석에 포함될 수 있습니다.
경로에는 ** (디렉토리 또는 여러 수준의 디렉토리), * (0개 이상의 문자 시퀀스), 또는 ? (단일 문자)와 같은 와일드카드 문자가 포함될 수 있습니다.
제외 경로가 지정되지 않으면 Pylance는 자동으로 다음을 제외합니다: **/node_modules, **/\_\_pycache\_\_, .git 및 모든 가상 환경 디렉토리.
extraPaths[]가져오기 해결을 위한 추가 검색 경로를 지정합니다.
여러 경로가 있는 경우 문자열로 지정하고 쉼표로 구분하여 수락합니다. 예: ["path 1","path 2"].
importFormatabsolute모듈을 자동 가져올 때 기본 형식을 정의합니다. 허용되는 값은 absolute 또는 relative입니다.
include[]분석에 포함되어야 하는 디렉토리 또는 파일의 경로입니다.
경로가 지정되지 않으면 Pylance는 작업 공간 루트를 포함하는 디렉토리를 기본값으로 사용합니다.
경로에는 ** (디렉토리 또는 여러 수준의 디렉토리), * (0개 이상의 문자 시퀀스), 또는 ? (단일 문자)와 같은 와일드카드 문자가 포함될 수 있습니다.
fixAll[]모두 수정 명령 또는 source.fixAll 코드 작업을 실행할 때 실행할 코드 작업 목록입니다.
이 목록에서 허용되는 값:
  • source.unusedImports: 열린 파일에서 모든 사용되지 않는 가져오기를 제거합니다
  • source.convertImportFormat: python.analysis.importFormat 설정에 따라 가져오기를 변환합니다
includeAliasesFromUserFilesfalse자동 가져오기 제안 및 가져오기 추가 빠른 수정에서 사용자 파일의 별칭 기호를 포함할지를 지정합니다. 비활성화하면 Pylance는 기호가 정의된 위치에서 가져오기 제안을 제공합니다. 활성화하면 기호가 가져온 파일(즉, 별칭)에서도 가져오기 제안을 제공합니다. 허용되는 값은 truefalse입니다.
ignore[]진단 출력(오류 및 경고)이 억제되어야 하는 디렉토리 또는 파일의 경로입니다.
이러한 경로는 포함된 파일 또는 포함된 파일의 전이 폐쇄 내에 있는 경우에도 억제됩니다.
경로에는 ** (디렉토리 또는 여러 수준의 디렉토리), * (0개 이상의 문자 시퀀스), 또는 ? (단일 문자)와 같은 와일드카드 문자가 포함될 수 있습니다.
값이 제공되지 않으면 python.linting.ignorePatterns의 값(설정된 경우)이 사용됩니다.
indexingtruePylance가 시작 시 사용자 파일과 설치된 타사 라이브러스를 색인화해야 하는지를 지정합니다.
허용되는 값은 true 또는 false입니다.
true로 설정하면 기본적으로 Pylance는 설치된 패키지의 최상위 기호(즉, package/__init__.py__all__에 있는 기호)와 최대 2000개의 사용자 파일의 모든 기호를 색인화합니다.
false로 설정하면 Pylance는 이전에 편집기에서 열리거나 로드된 파일에서 이미 참조되거나 사용된 기호만 표시합니다.
inlayHints.callArgumentNamesfalse호출 인수 이름에 대한 인레이 힌트를 표시할지를 지정합니다. 허용되는 값은 true 또는 false입니다.
inlayHints.functionReturnTypesfalse함수 반환 유형에 대한 인레이 힌트를 표시할지를 지정합니다. 허용되는 값은 true 또는 false입니다.
inlayHints.pytestParametersfalsepytest 픽스처 인수 유형에 대한 인레이 힌트를 표시할지를 지정합니다. 허용되는 값은 true 또는 false입니다.
inlayHints.variableTypesfalse변수 유형에 대한 인레이 힌트를 표시할지를 지정합니다. 허용되는 값은 true 또는 false입니다.
languageServerModedefault개발 요구에 따라 Pylance의 성능을 최적화하기 위한 미리 정의된 구성을 제공합니다.
허용되는 값은 defaultlight입니다.
default로 설정하면 언어 서버는 시스템에 과부하를 주지 않고 대부분의 기계에 충분한 기능을 제공합니다.
light로 설정하면 경량 메모리 효율적인 설정이 활성화됩니다. 이 모드는 다양한 기능을 비활성화하여 Pylance가 간소화된 텍스트 편집기처럼 작동하도록 하며, 전체 IntelliSense 기능이 필요하지 않고 Pylance가 가능한 한 리소스 친화적이기를 원하는 사용자에게 적합합니다.
각 모드에 의해 기본 설정 값이 다음과 같이 재정의됩니다:
logLevelError언어 서버가 수행할 로깅 수준을 지정합니다.
제공되는 로깅 수준은 Error, Warning, Information, 및 Trace입니다.
packageIndexDepths[]패키지별로 색인화할 하위 수준 수를 재정의하는 데 사용됩니다.
기본적으로 최상위 모듈만 색인화됩니다(깊이 = 1).
하위 모듈을 색인화하려면 색인화하려는 각 하위 모듈의 깊이를 1씩 증가시킵니다.
허용되는 값은 {"name": "패키지 이름 (str)", "depth": "스캔할 깊이 (int)", "includeAllSymbols": "모든 기호를 포함할지 여부 (bool)"}와 같은 객체의 튜플입니다.
includeAllSymbolsfalse로 설정되면 각 패키지의 __all__에 있는 기호만 포함됩니다. true로 설정되면 Pylance는 파일 내의 모든 모듈/최상위 기호 선언을 색인화합니다.
사용 예: [{"name": "sklearn", "depth": 2, "includeAllSymbols": true}, {"name": "matplotlib", "depth": 3, "includeAllSymbols": false}]
stubPath./typings사용자 정의 유형 스텁이 포함된 디렉토리의 경로를 지정합니다. 각 패키지의 유형 스텁 파일은 자체 하위 디렉토리에 있어야 합니다.
typeCheckingModeoff수행할 유형 검사 분석의 수준을 지정합니다.
허용되는 값은 off, basic, 및 strict입니다.
off로 설정하면 유형 검사 분석이 수행되지 않으며, 해결되지 않은 가져오기/변수 진단이 생성됩니다.
basic으로 설정하면 비유형 검사 관련 규칙(모든 규칙이 off에 포함됨)과 기본 유형 검사 규칙이 사용됩니다.
strict로 설정하면 모든 유형 검사 규칙이 가장 높은 오류 심각도(모든 규칙이 offbasic 범주에 포함됨)로 사용됩니다.
useLibraryCodeForTypestrue유형 스텁이 발견되지 않을 때 패키지의 소스 코드를 구문 분석합니다. 허용되는 값은 truefalse입니다.
userFileIndexingLimit2000Pylance가 작업 공간에서 색인화할 최대 사용자 파일 수를 설정합니다. -1로 설정하면 Pylance는 모든 파일을 색인화합니다.
파일 색인화는 성능 집약적인 작업이라는 점에 유의하십시오.

진단 심각도 규칙

이 섹션에서는 python.analysis.diagnosticSeverityOverrides 설정을 사용하여 사용자 정의할 수 있는 모든 규칙을 자세히 설명합니다.

{
"python.analysis.diagnosticSeverityOverrides": {
"reportUnboundVariable": "information",
"reportImplicitStringConcatenation": "warning"
}
}
설명
reportAssertAlwaysTrue'assert' 문에 대한 진단으로, 아마도 항상 참으로 평가될 것입니다. 이는 프로그래밍 오류를 나타낼 수 있습니다.
reportCallInDefaultInitializer기본값 초기화 표현식 내의 함수 호출에 대한 진단입니다. 이러한 호출은 모듈 초기화 시 수행되는 비용이 많이 드는 작업을 숨길 수 있습니다.
reportConstantRedefinition모든 대문자와 밑줄 및 숫자가 포함된 변수 이름을 재정의하려는 시도에 대한 진단입니다.
reportDuplicateImport두 번 이상 가져온 기호 또는 모듈에 대한 진단입니다.
reportFunctionMemberAccess함수에 대한 멤버 접근에 대한 진단입니다.
reportGeneralTypeIssues일반적인 유형 불일치, 지원되지 않는 작업, 인수/매개변수 불일치 등에 대한 진단입니다. 이는 다른 규칙에 의해 다루어지지 않는 모든 기본 유형 검사 규칙을 포함합니다. 구문 오류는 포함되지 않습니다.
reportImportCycles순환 가져오기 체인에 대한 진단입니다. 이는 Python에서 오류가 아니지만 유형 분석 속도를 늦추고 종종 아키텍처 레이어링 문제를 나타냅니다. 일반적으로 피해야 합니다.
reportImplicitStringConcatenation서로 뒤따르는 두 개 이상의 문자열 리터럴에 대한 진단으로, 암시적 연결을 나타냅니다. 이는 나쁜 관행으로 간주되며 종종 누락된 쉼표와 같은 버그를 숨깁니다.
reportIncompatibleMethodOverride기본 클래스의 동일한 이름의 메서드를 호환되지 않는 방식으로 재정의하는 메서드에 대한 진단입니다(잘못된 매개변수 수, 호환되지 않는 매개변수 유형 또는 호환되지 않는 반환 유형).
reportIncompatibleVariableOverride기본 클래스의 동일한 이름의 기호를 호환되지 않는 유형으로 재정의하는 클래스 변수 선언에 대한 진단입니다.
reportInvalidStringEscapeSequence문자열 리터럴 내에서 사용된 잘못된 이스케이프 시퀀스에 대한 진단입니다. Python 사양에 따르면 이러한 시퀀스는 향후 버전에서 구문 오류를 발생시킵니다.
reportInvalidStubStatement스텁 파일 내에 나타나서는 안 되는 문에 대한 진단입니다.
reportInvalidTypeVarUse함수 시그니처에서 유형 변수를 잘못 사용한 경우에 대한 진단입니다.
reportMissingImports해당하는 가져오기 Python 파일 또는 유형 스텁 파일이 없는 가져오기에 대한 진단입니다.
reportMissingModuleSource해당하는 소스 파일이 없는 가져오기에 대한 진단입니다. 이는 유형 스텁이 발견되었지만 모듈 소스 파일이 발견되지 않았음을 나타내며, 이 실행 환경에서 코드를 사용할 때 런타임 오류가 발생할 수 있습니다. 유형 검사는 유형 스텁을 사용하여 수행됩니다.
reportMissingTypeArgument명시적 또는 암시적 유형 인수를 제공하지 않고 제네릭 클래스를 사용할 때에 대한 진단입니다.
reportMissingTypeStubs해당하는 유형 스텁 파일이 없는 가져오기에 대한 진단입니다(타입셰드 파일 또는 사용자 정의 유형 스텁). 유형 검사기는 최상의 분석 작업을 수행하기 위해 유형 스텁이 필요합니다.
reportOptionalCall선택적 유형의 변수를 호출하려는 시도에 대한 진단입니다.
reportOptionalContextManager선택적 유형을 컨텍스트 관리자(즉, with 문에 대한 매개변수)로 사용하려는 시도에 대한 진단입니다.
reportOptionalIterable선택적 유형을 반복 가능한 값(예: for 문 내에서)으로 사용하려는 시도에 대한 진단입니다.
reportOptionalMemberAccess선택적 유형의 변수의 멤버에 접근하려는 시도에 대한 진단입니다.
reportOptionalOperand선택적 유형을 이항 또는 단항 연산자(예: '+', '==', 'or', 'not')의 피연산자로 사용하려는 시도에 대한 진단입니다.
reportOptionalSubscript선택적 유형의 변수를 인덱싱(서브스크립트)하려는 시도에 대한 진단입니다.
reportPrivateUsage비공식 또는 보호된 변수 또는 함수의 잘못된 사용에 대한 진단입니다. 보호된 클래스 멤버는 단일 밑줄 _로 시작하며 하위 클래스에서만 접근할 수 있습니다. 비공식 클래스 멤버는 이중 밑줄로 시작하지만 이중 밑줄로 끝나지 않으며 선언된 클래스 내에서만 접근할 수 있습니다. 클래스 외부에 선언된 변수와 함수는 이름이 단일 또는 이중 밑줄로 시작하면 비공식으로 간주되며 선언된 모듈 외부에서 접근할 수 없습니다.
reportPropertyTypeMismatchsetter에 전달된 값의 유형이 getter에서 반환된 값의 유형과 일치하지 않는 속성에 대한 진단입니다. 이러한 불일치는 속성이 변수처럼 작동하도록 설계된 의도를 위반합니다.
reportSelfClsParameterName인스턴스 메서드에서 누락되었거나 잘못된 이름의 "self" 매개변수와 클래스 메서드에서 "cls" 매개변수에 대한 진단입니다. 메타클래스(“type”에서 파생된 클래스)의 인스턴스 메서드는 인스턴스 메서드에 대해 "cls"를 사용할 수 있습니다.
reportUndefinedVariable정의되지 않은 변수에 대한 진단입니다.
reportUnboundVariable바인딩되지 않은 변수 및 아마도 바인딩되지 않은 변수에 대한 진단입니다.
reportUnknownArgumentType함수 또는 메서드의 호출 인수가 알 수 없는 유형인 경우에 대한 진단입니다.
reportUnknownLambdaType알 수 없는 유형의 입력 또는 반환 매개변수에 대한 진단입니다.
reportUnknownMemberType알 수 없는 유형의 클래스 또는 인스턴스 변수에 대한 진단입니다.
reportUnknownParameterType함수 또는 메서드의 입력 또는 반환 매개변수가 알 수 없는 유형인 경우에 대한 진단입니다.
reportUnknownVariableType알 수 없는 유형의 변수에 대한 진단입니다.
reportUnnecessaryCast정적으로 불필요한 것으로 판단되는 'cast' 호출에 대한 진단입니다. 이러한 호출은 때때로 프로그래밍 오류를 나타냅니다.
reportUnnecessaryIsInstance결과가 정적으로 항상 true 또는 false로 판단되는 'isinstance' 또는 'issubclass' 호출에 대한 진단입니다. 이러한 호출은 종종 프로그래밍 오류를 나타냅니다.
reportUnusedCallResult결과가 소비되지 않고 None이 아닌 호출 표현식에 대한 진단입니다.
reportUnusedClass비공식 이름(밑줄로 시작하는)으로 된 클래스가 접근되지 않는 경우에 대한 진단입니다.
reportUnusedCoroutineCoroutine을 반환하는 호출 표현식이 소비되지 않는 경우에 대한 진단입니다.
reportUnusedFunction비공식 이름(밑줄로 시작하는)으로 된 함수 또는 메서드가 접근되지 않는 경우에 대한 진단입니다.
reportUnusedImport해당 파일 내에서 참조되지 않는 가져온 기호에 대한 진단입니다.
reportUnusedVariable접근되지 않는 변수에 대한 진단입니다.
reportUnsupportedDunderAll__all__에 대해 수행된 지원되지 않는 작업에 대한 진단입니다.
reportWildcardImportFromLibrary외부 라이브러리에서 와일드카드 가져오기에 대한 진단입니다.

자동 완성 설정

설정
(python.autoComplete.)
기본값설명참조
extraPaths[]자동 완성 데이터를 로드할 추가 패키지의 위치를 지정합니다.편집

미리 정의된 변수

Python 확장 설정은 미리 정의된 변수를 지원합니다. 일반 VS Code 설정과 유사하게 변수는 ${variableName} 구문을 사용합니다. 특히, 확장은 다음 변수를 지원합니다:

  • ${cwd} - 시작 시 작업 실행기의 현재 작업 디렉토리

  • ${workspaceFolder} - VS Code에서 열린 폴더의 경로

  • ${workspaceRootFolderName} - 슬래시(/) 없이 VS Code에서 열린 폴더의 이름

  • ${workspaceFolderBasename} - 슬래시(/) 없이 VS Code에서 열린 폴더의 이름

  • ${file} - 현재 열린 파일

  • ${relativeFile} - workspaceFolder에 상대적인 현재 열린 파일

  • ${relativeFileDirname} - workspaceFolder에 상대적인 현재 열린 파일의 디렉토리 이름

  • ${fileBasename} - 현재 열린 파일의 기본 이름

  • ${fileBasenameNoExtension} - 파일 확장자가 없는 현재 열린 파일의 기본 이름

  • ${fileDirname} - 현재 열린 파일의 디렉토리 이름

  • ${fileExtname} - 현재 열린 파일의 확장자

  • ${lineNumber} - 활성 파일에서 현재 선택된 줄 번호

  • ${selectedText} - 활성 파일에서 현재 선택된 텍스트

  • ${execPath} - 실행 중인 VS Code 실행 파일의 경로

미리 정의된 변수 및 예제 사용에 대한 추가 정보는 일반 VS Code 문서의 변수 참조를 참조하십시오.

다음 단계

  • Python 환경 - 편집 및 디버깅에 사용되는 Python 인터프리터를 제어합니다.
  • 코드 편집 - Python에 대한 자동 완성, IntelliSense, 형식 지정 및 리팩토링에 대해 알아봅니다.
  • Linting - 다양한 Python 린터를 활성화, 구성 및 적용합니다.
  • 디버깅 - Python을 로컬 및 원격으로 디버깅하는 방법을 배웁니다.
  • 테스트 - 테스트 환경을 구성하고 테스트를 발견, 실행 및 디버깅합니다.