Visual Studio의 Python 프로젝트

Python 애플리케이션은 일반적으로 폴더 및 파일만 사용하여 정의됩니다. 애플리케이션이 증가함에 따라 이 구조는 복잡해질 수 있으며 자동 생성된 파일, 웹 애플리케이션용 JavaScript 등을 포함할 수 있습니다. Visual Studio 프로젝트는 이러한 복잡성을 관리하는 데 도움이 됩니다. 프로젝트(.pyproj 파일)는 프로젝트와 관련된 모든 소스 및 콘텐츠 파일을 식별합니다. 또한 각 파일에 대한 빌드 정보를 포함하고 소스 제어 시스템과 통합할 정보를 유지 관리하며 애플리케이션을 논리 구성 요소로 구성하는 데 도움을 줍니다.

Visual Studio에서 솔루션 탐색기에 열린 Python 프로젝트를 보여 주는 스크린샷

프로젝트는 항상 Visual Studio 솔루션 내에서 관리됩니다. 솔루션에는 확장 모듈을 구현하는 C++ 프로젝트를 참조하는 Python 프로젝트와 같이 서로를 참조할 수 있는 여러 프로젝트가 포함될 수 있습니다. 이 관계를 통해 Visual Studio에서는 Python 프로젝트 디버그를 시작할 때 자동으로 C++ 프로젝트를 빌드합니다(필요한 경우). 자세한 내용은 Visual Studio의 솔루션 및 프로젝트를 참조하세요.

Visual Studio는 다양한 유형의 애플리케이션 구조를 빠르게 만들 수 있는 다양한 Python 프로젝트 템플릿을 제공합니다. 템플릿을 선택하여 기존 폴더 트리에서 프로젝트를 만들거나 빈 클린 프로젝트를 만들 수 있습니다. 사용 가능한 템플릿 목록은 프로젝트 템플릿 섹션의 표를 참조하세요.

Python 프로젝트 작업을 위한 팁

Visual Studio에서 Python 코드를 실행하기 위해 프로젝트를 사용할 필요는 없지만 이렇게 하면 이점이 있습니다. 시작할 때 프로젝트 및 Python 작업에 대한 다음 고려 사항을 검토합니다.

  • Visual Studio 2019 이상에서는 Visual Studio 프로젝트 및 솔루션 파일을 만들지 않고도 Python 코드가 포함된 폴더를 열어 해당 코드를 실행하도록 지원합니다.

    이 방법에 대한 단계별 안내는 빠른 시작: 폴더에서 Python 코드 열기 및 실행 문서에서 사용할 수 있습니다.

  • Visual Studio에서 Python 코드를 실행하는 데 프로젝트가 필요하지 않습니다. 모든 버전의 Visual Studio가 Python 코드와 잘 작동합니다.

    Python 파일 자체를 열고 자동 완성, IntelliSense 및 디버깅 기능에 즉시 액세스할 수 있습니다. 그러나 프로젝트 없이 코드를 사용하는 데 몇 가지 잠재적인 단점이 있습니다.

    • 그러나 이러한 코드는 항상 기본 전역 환경을 사용하기 때문에 코드가 다른 환경용으로 작성된 경우 잘못된 완성 또는 오류가 표시될 수 있습니다.
    • Visual Studio는 단일 파일이 열려 있는 폴더의 모든 파일 및 패키지를 분석합니다. 이 프로세스는 상당한 CPU 시간을 사용할 수 있습니다.
  • 기존 코드에서 Visual Studio 프로젝트를 만들 수 있습니다. 이 방법은 기존 파일에서 프로젝트 만들기 섹션에 설명되어 있습니다.

기본 프로젝트 작업: 파일, 환경 및 시작

Python 코드와 함께 프로젝트를 사용하는 경우 파일 추가, 시작 파일 할당, Python 인터프리터 환경 설정 등의 기본 작업을 완료합니다.

애플리케이션을 개발할 때 일반적으로 다양한 유형의 새 파일을 프로젝트에 추가해야 합니다. 더 많은 파일을 쉽게 추가할 수 있습니다. 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가>기존 항목을 선택하고 추가할 파일 유형을 찾습니다. 추가>새 항목 옵션은 새 파일을 만드는 데 사용할 수 있는 항목 템플릿을 보여 주는 대화 상자를 엽니다. 옵션에는 빈 Python 파일, Python 클래스, 단위 테스트, 웹 애플리케이션과 관련된 다양한 파일이 포함됩니다. 테스트 프로젝트를 통해 템플릿 옵션을 시도해 보고 사용자의 Visual Studio 버전에서 사용 가능한 항목을 알아볼 수 있습니다. 자세한 내용은 항목 템플릿 참조를 참조하세요.

각 Python 프로젝트에는 솔루션 탐색기에 굵게 표시된 시작 파일이 하나씩 할당되어 있습니다. 시작 파일은 디버깅을 시작할 때(F5 또는 디버그>디버깅 시작 선택) 또는 대화형 창에서 프로젝트를 실행할 때 실행됩니다. Shift + Alt + F5 바로 가기 키를 사용하거나 디버그>Python 대화형에서 프로젝트 실행을 선택하여 이 창을 열 수 있습니다. 이 시작 파일을 변경하려면 파일을 마우스 오른쪽 단추로 클릭하고 시작 항목으로 설정(또는 이전 버전의 Visual Studio에서는 시작 파일로 설정)을 선택합니다.

프로젝트에서 선택한 시작 파일을 제거하고 대체 파일을 선택하지 않으면 Visual Studio에서 프로젝트 시작에 사용할 Python 파일을 알지 못합니다. 이 경우 Visual Studio 2017 버전 15.6 이상에서 오류가 발생합니다. 이전 버전은 Python 인터프리터가 실행 중인 출력 창을 열거나 출력 창이 열리고 즉시 닫힙니다. 이러한 동작이 발생할 경우 할당된 시작 파일이 있는지 확인합니다.

출력 창을 열어 두려면 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 대화 상자에서 디버그 탭을 선택한 다음 -i 플래그를 인터프리터 인수 필드에 추가합니다. 이 인수는 프로그램이 완료된 후 인터프리터가 대화형 모드로 전환되도록 합니다. 창은 닫을 때까지 열려 있습니다(예: 바로 가기 키 Ctrl+E+Enter 사용).

새 프로젝트는 항상 기본 글로벌 Python 환경과 연결됩니다. 프로젝트를 다른 환경(가상 환경 포함)과 연결하려면 프로젝트에서 Python 환경 노드를 마우스 오른쪽 단추로 클릭합니다. 환경 추가를 선택한 다음 제외하려는 환경을 선택합니다. 도구 모음의 환경 드롭다운 컨트롤을 사용하여 환경을 선택하거나 다른 환경을 프로젝트에 추가할 수도 있습니다.

Visual Studio에서 Python 툴바의 환경 추가 명령을 보여 주는 스크린샷

활성 상태의 환경을 변경하려면 아래 이미지에 표시된 것처럼 솔루션 탐색기에서 원하는 환경을 마우스 오른쪽 단추로 클릭하고 환경 활성화를 선택합니다. 자세한 내용은 프로젝트의 환경 선택을 참조하세요.

Visual Studio에서 Python 프로젝트의 환경을 활성화하는 방법을 보여 주는 스크린샷

프로젝트 템플릿

Visual Studio는 처음부터 작성하거나 기존 코드에서 작성하는 등 Python 프로젝트를 설정하는 다양한 방법을 제공합니다. 템플릿을 사용하려면 파일>새로 만들기>프로젝트를 선택하거나 솔루션 탐색기의 솔루션을 마우스 오른쪽 단추로 클릭하고 추가>새 프로젝트를 선택합니다. 새 프로젝트 대화 상자에서 Python을 검색하거나 언어>Python 노드를 선택하여 Python 관련 템플릿을 볼 수 있습니다.

Visual Studio에서 사용 가능한 Python 템플릿을 포함한 새 프로젝트 대화 상자를 보여 주는 스크린샷

다음 템플릿은 Visual Studio 버전 2022에서 사용할 수 있습니다.

템플릿 설명
기존 Python 코드에서 폴더 구조의 기존 Python 코드에서 Visual Studio 프로젝트를 만듭니다.
Python 애플리케이션 하나의 비어있는 소스 파일을 포함하는 새로운 Python 애플리케이션에 대한 기본 프로젝트 구조를 제공합니다. 기본적으로 프로젝트는 기본 전역 환경의 콘솔 인터프리터에서 실행됩니다. 다른 환경 할당을 변경할 수 있습니다.
웹 프로젝트 Bottle, Django 및 Flask를 비롯한 다양한 프레임워크를 기반으로 하는 웹앱에 대한 프로젝트입니다.
백그라운드 애플리케이션(IoT) 디바이스에서 백그라운드 서비스로 실행되도록 Python 프로젝트 배포를 지원합니다. 자세한 내용은 Windows IoT 개발자 센터를 참조하세요.
Python 확장 모듈 이 템플릿은 Python 워크로드와 함께 Python 네이티브 개발 도구를 Visual Studio 2017 이상에 설치한 경우(설치 참조) Visual C++ 아래에 나타납니다. 이 템플릿은 Python용 C++ 확장 만들기에 설명된 구조와 유사한 C++ 확장 DLL의 핵심 구조를 제공합니다.

다음 템플릿은 Visual Studio 버전 2019에서 사용할 수 있습니다. 버전 2019에서 사용할 수 있는 모든 템플릿이 이전 버전의 Visual Studio에서 사용할 수 있는 것은 아닙니다.

템플릿 설명
기존 Python 코드에서 폴더 구조의 기존 Python 코드에서 Visual Studio 프로젝트를 만듭니다.
Python 애플리케이션 하나의 비어있는 소스 파일을 포함하는 새로운 Python 애플리케이션에 대한 기본 프로젝트 구조를 제공합니다. 기본적으로 프로젝트는 기본 전역 환경의 콘솔 인터프리터에서 실행됩니다. 다른 환경 할당을 변경할 수 있습니다.
웹 프로젝트 Bottle, Django 및 Flask를 비롯한 다양한 프레임워크를 기반으로 하는 웹앱에 대한 프로젝트입니다.
백그라운드 애플리케이션(IoT) 디바이스에서 백그라운드 서비스로 실행되도록 Python 프로젝트 배포를 지원합니다. 자세한 내용은 Windows IoT 개발자 센터를 참조하세요.
Python 확장 모듈 이 템플릿은 Python 워크로드와 함께 Python 네이티브 개발 도구를 Visual Studio 2017 이상에 설치한 경우(설치 참조) Visual C++ 아래에 나타납니다. 이 템플릿은 Python용 C++ 확장 만들기에 설명된 구조와 유사한 C++ 확장 DLL의 핵심 구조를 제공합니다.
IronPython 애플리케이션 기본적으로 IronPython을 사용하며 .NET 언어와의 .NET interop 및 혼합 모드 디버깅을 사용하도록 설정합니다. 이 템플릿은 Python 애플리케이션 템플릿과 유사합니다.
IronPython WPF 애플리케이션 애플리케이션의 사용자 인터페이스에 대한 Windows Presentation Foundation XAML 파일에 IronPython을 사용하는 프로젝트 구조를 제공합니다. Visual Studio는 XAML UI 디자이너를 제공하고 코드 숨김은 Python으로 작성할 수 있으며 애플리케이션은 콘솔을 표시하지 않고 실행됩니다.
IronPython Silverlight 웹 페이지 Silverlight를 사용하여 브라우저에서 실행되는 IronPython 프로젝트를 생성합니다. 애플리케이션의 Python 코드는 웹 페이지에 스크립트로 포함됩니다. 상용구 스크립트 태그는 Silverlight 내부에서 실행되는 IronPython을 초기화하는 JavaScript 코드를 가져오며, 여기서 Python 코드가 DOM과 상호 작용할 수 있습니다.
IronPython Windows Forms 애플리케이션 Windows Forms에서 코드를 사용하여 만든 UI와 IronPython을 사용하는 프로젝트 구조를 구축합니다. 콘솔을 표시하지 않고 애플리케이션을 실행합니다.

참고 항목

Python은 해석된 언어이므로 Visual Studio의 Python 프로젝트는 다른 컴파일된 언어 프로젝트(예: C#)와 같은 독립 실행형 실행 파일을 생성하지 않습니다. 자세한 내용은 질문 및 답변을 참조하세요.

기존 파일의 프로젝트 만들기

다음 단계에 따라 기존 파일에서 프로젝트를 만듭니다.

Important

다음 프로세스에서는 원본 파일을 이동하거나 복사하지 않습니다. 파일 복사본으로 작업하려면 먼저 폴더를 복제한 다음 프로젝트를 만듭니다.

  1. Visual Studio를 실행하고 파일>새로 만들기>프로젝트를 선택합니다.

  2. 새 프로젝트 만들기 대화 상자에서 python을 검색하고 기존 Python 코드 템플릿에서 템플릿을 선택한 후 다음을 선택합니다.

  3. 새 프로젝트 구성 대화 상자에서 프로젝트 이름위치를 입력하고, 프로젝트를 포함할 솔루션을 선택한 후 만들기를 선택합니다.

  4. 기존 Python 코드에서 새 프로젝트 만들기 마법사에서 폴더 경로를 기존 코드로 설정하고, 파일 형식에 대한 필터를 설정하고, 프로젝트에 필요한 검색 경로를 지정한 다음, 다음을 선택합니다. 검색 경로를 모르는 경우 필드를 비워 둡니다.

    폴더 경로, 파일 형식 필터 및 검색 경로 선택을 포함하여 기존 코드에서 새 프로젝트를 만드는 스크린샷

  5. 다음 페이지에서 프로젝트의 시작 파일을 선택합니다. Visual Studio는 기본 전역 Python 인터프리터 및 버전을 선택합니다. 드롭다운 메뉴를 사용하여 환경을 변경할 수 있습니다. 준비가 되면 다음을 선택합니다.

    참고 항목

    대화 상자에는 루트 폴더의 파일만 표시됩니다. 원하는 파일이 하위 폴더에 있는 경우 시작 파일을 비워 둡니다. 이후 단계에서 설명한 대로 솔루션 탐색기에서 시작 파일을 설정할 수 있습니다.

    시작 파일 및 Python 환경 선택을 포함하여 기존 코드 창에서 새 프로젝트를 만드는 스크린샷.

  6. 프로젝트 파일을 저장할 위치를 선택합니다(디스크의 .pyproj 파일). 해당하는 경우 이 대화 상자에서 가상 환경의 자동 검색을 포함하고 다양한 웹 프레임워크에 대한 프로젝트를 사용자 지정할 수도 있습니다. 이러한 옵션을 잘 모를 경우 필드에 기본값 설정을 유지합니다.

    프로젝트 파일의 위치 및 기타 선택적 설정을 포함하여 기존 코드 창에서 새 프로젝트를 만드는 스크린샷.

  7. 마침을 선택합니다.

    Visual Studio가 프로젝트를 만들어 솔루션 탐색기에서 엽니다. .pyproj 파일을 다른 위치로 이동하려면 솔루션 탐색기의 파일을 선택한 다음 도구 모음에서 파일>다른 이름으로 저장을 선택합니다. 이 작업은 프로젝트에서 파일 참조를 업데이트하지만 코드 파일은 이동하지 않습니다.

  8. 다른 시작 파일을 설정하려면 솔루션 탐색기에서 파일을 찾아 마우스 오른쪽 단추로 클릭하고 시작 파일로 설정을 선택합니다.

연결된 파일

연결된 파일은 프로젝트로 가져온 파일이지만 일반적으로 애플리케이션의 프로젝트 폴더 외부에 상주합니다. 이러한 파일은 솔루션 탐색기에 다음과 같이 오버레이드된 바로 가기 아이콘이 있는 일반 파일로 나타납니다.

연결된 파일은 <Compile Include="..."> 요소를 사용하여 .pyproj 파일에 지정됩니다. 연결된 파일은 디렉터리 구조 외부의 상대 경로를 사용하는 경우 암시적입니다. 파일이 솔루션 탐색기 내에서 경로를 사용하는 경우 연결된 파일은 명시적입니다. 다음 예제에서는 명시적으로 연결된 파일을 보여줍니다.

<Compile Include="..\test2.py">
    <Link>MyProject\test2.py</Link>
</Compile>

다음 조건에서는 연결된 파일이 무시됩니다.

  • 연결된 파일에는 프로젝트 디렉터리 내에 있는 Include 특성에 지정된 경로와 Link 메타데이터가 포함되어 있습니다.
  • 연결된 파일이 프로젝트 계층 구조 내에 존재하는 파일을 복제합니다.
  • 연결된 파일에는 프로젝트 계층 구조 외부 상대 경로인 Link 경로와 Link 메타데이터가 포함되어 있습니다.
  • 링크 경로가 루트입니다.

연결된 파일 작업

기존 항목을 링크로 추가하려면 파일을 추가할 프로젝트에서 폴더를 마우스 오른쪽 단추로 클릭하고 추가>기존 항목을 선택합니다. 대화 상자에서 파일을 선택한 다음 추가>링크로 추가를 선택합니다. 충돌하는 파일이 없다면 이 명령을 통해 선택한 폴더에 링크가 만들어집니다. 하지만 같은 이름의 기존 파일이 있거나 해당 파일에 대한 링크가 프로젝트에 이미 있는 경우 링크가 추가되지 않습니다.

프로젝트 폴더에 이미 있는 파일로 링크를 시도하면 파일이 링크가 아닌 일반 파일로 추가됩니다. 파일을 링크로 변환하려면 파일>다른 이름으로 저장을 선택하여 프로젝트 계층 외부의 위치에 파일을 저장합니다. Visual Studio는 자동으로 파일을 링크로 변환합니다. 마찬가지로 파일>다른 이름으로 저장을 사용하여 링크를 다시 변환하고 프로젝트 계층 구조 내의 파일에 저장할 수 있습니다.

솔루션 탐색기에서 연결된 파일을 이동하면 링크가 이동되지만 실제 파일은 영향을 받지 않습니다. 마찬가지로, 링크를 삭제하면 파일에 영향을 주지 않고 링크가 제거됩니다.

연결된 파일의 이름을 바꿀 수 없습니다.

참조

Visual Studio 프로젝트는 프로젝트 및 확장에 참조 추가를 지원하며 이 내용은 솔루션 탐색기참조 노드 아래 나타납니다.

Visual Studio에서 Python 프로젝트에서 확장 참조를 추가하는 방법을 보여 주는 스크린샷

일반적으로 확장 참조는 프로젝트 간의 종속성을 나타내며 디자인 타임에 IntelliSense를 제공하거나 컴파일 타임에 링크를 제공하는 데 사용됩니다. Python 프로젝트는 유사한 방식으로 참조를 사용하지만, Python의 동적 특성으로 인해 주로 디자인 타임에 향상된 IntelliSense를 제공하는 데 사용됩니다. 또한 다른 종속성을 설치하기 위해 Microsoft Azure에 배포하는 데도 사용할 수 있습니다.

확장 모듈 작업

.pyd 파일에 대한 참조를 통해 생성된 모듈에 IntelliSense를 사용할 수 있습니다. Visual Studio는 .pyd 파일을 Python 인터프리터에 로드하고 해당 형식과 함수를 내부적으로 검사합니다. Visual Studio에서는 또한 함수에 대한 doc 문자열의 구문 분석을 시도하여 서명 도움말도 제공합니다.

언제든지 디스크에서 확장 모듈이 업데이트되는 경우 Visual Studio는 백그라운드로 모듈을 다시 분석합니다. 이 작업은 런타임 동작에 영향을 주지 않지만, 분석이 완료될 때까지 일부 완성 기능을 사용할 수 없습니다.

모듈을 포함하는 폴더에 검색 경로를 추가해야 할 수 있습니다.

.NET 프로젝트 작업

IronPython으로 작업하는 경우 .NET 어셈블리에 참조를 추가하여 IntelliSense를 사용하도록 설정할 수 있습니다. 솔루션의 .NET 프로젝트에 대해 Python 프로젝트의 참조 노드를 마우스 오른쪽 단추로 클릭하고 참조 추가를 선택합니다. 대화 상자에서 프로젝트 탭을 선택하고 원하는 프로젝트로 이동합니다. 별도로 다운로드한 DLL의 경우 찾아보기 탭을 대신 선택하여 원하는 DLL을 찾아봅니다.

IronPython의 참조는 clr.AddReference('<AssemblyName>') 메서드를 호출할 때까지 사용할 수 없으므로 어셈블리에 적절한 clr.AddReference 메서드 호출도 추가해야 합니다. 이 호출은 일반적으로 코드의 시작 부분에 추가됩니다. 예를 들어 Visual Studio의 IronPython Windows Forms 애플리케이션(Visual Studio 2019에서 제공) 프로젝트 템플릿에서 만든 코드는 파일의 맨 위에 두 개의 호출을 포함합니다.

import clr
clr.AddReference('System.Drawing')
clr.AddReference('System.Windows.Forms')

from System.Drawing import *
from System.Windows.Forms import *

# Other code omitted

WebPI 프로젝트 작업

WebPI 피드를 통해 추가 구성 요소를 설치할 수 있는 Microsoft Azure Cloud Services에 배포할 WebPI(웹 플랫폼 설치 관리자) 제품 항목에 대한 참조를 추가할 수 있습니다. 기본적으로 표시된 피드는 Python에 국한되며 Django, CPython 및 기타 핵심 구성 요소를 포함합니다. 다음 이미지와 같이 사용자 고유의 피드를 선택할 수도 있습니다. Microsoft Azure에 게시할 때 설치 작업은 참조된 모든 제품을 설치합니다.

Important

WebPI 프로젝트는 Visual Studio 2017 또는 Visual Studio 2019에서 사용할 수 없습니다.

Visual Studio의 WebPI(웹 플랫폼 설치 관리자) 참조를 보여 주는 스크린샷