

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Elastic Beanstalk를 위한 Python 개발 환경 설정
<a name="python-development-environment"></a>

이 주제에서는 AWS Elastic Beanstalk로 배포하기 전 로컬 컴퓨터에서 애플리케이션을 테스트하기 위해 Python 개발 환경을 설정하는 지침을 제공합니다. 또한 유용한 도구에 대한 설치 지침을 제공하는 웹 사이트도 알려줍니다.

이 설명서의 절차를 수행하기 위해서는 실행 명령줄을 입력할 쉘 또는 터미널이 필요합니다. 명령은 프롬프트 기호(\$1)와 해당하는 경우 현재 디렉터리 이름 뒤에 리스트로 표시됩니다.

```
~/eb-project$ this is a command
this is output
```

Linux 및 macOS의 경우 선호하는 쉘과 패키지 관리자를 사용할 수 있습니다. Windows의 경우 [Linux용 Windows Subsystem을 설치](https://docs.microsoft.com/en-us/windows/wsl/install-win10)하여 Ubuntu 및 Bash의 Windows 통합 버전을 가져옵니다.

**Topics**
+ [사전 조건](#python-common-prereq)
+ [가상 환경 사용](#python-common-setup-venv)
+ [Elastic Beanstalk에 대해 Python 프로젝트 구성](#python-common-configuring)

## 사전 조건
<a name="python-common-prereq"></a>

다음 목록에서는 Elastic Beanstalk 및 Python 애플리케이션 작업을 위한 일반적인 사전 조건을 알려 줍니다.
+ **Python 언어** - 선택한 Elastic Beanstalk Python 플랫폼 버전에 포함된 Python 언어 버전을 설치합니다. 지원되는 Python 언어 버전 목록은 *AWS Elastic Beanstalk 플랫폼* 가이드의 [지원되는 Python 플랫폼](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python)을 참조하세요. 개발 시스템에 Python이 아직 설정되어 있지 않은 경우 Python 웹 사이트의 [Python 다운로드](https://www.python.org/downloads/) 페이지를 참조하세요.
+ **`pip` 유틸리티** - `pip` 유틸리티는 Python의 패키지 설치 관리자입니다. 이 설치 관리자는 프로젝트의 종속 항목을 설치하고 나열하여 Elastic Beanstalk가 애플리케이션 환경 설정법을 알 수 있도록 합니다. `pip`에 대한 자세한 내용은 *pip.pypa.io* 웹 사이트의 [pip 페이지](https://pip.pypa.io/en/stable/)를 참조하세요.
+ **(선택 사항) Elastic Beanstalk 명령줄 인터페이스(EB CLI)** - [EB CLI](eb-cli3.md)는 필요한 배포 파일로 애플리케이션을 패키징할 수 있습니다. 또한 Elastic Beanstalk 환경을 생성하고 이 환경에 애플리케이션을 배포할 수도 있습니다. Elastic Beanstalk 콘솔을 통해 배포할 수도 있으므로 EB CLI가 반드시 필요한 것은 아닙니다.
+ **작동 중인 `SSH` 설치** - SSH 프로토콜을 사용하여 실행 중인 인스턴스에 연결하여 배포를 검사하거나 디버깅할 수 있습니다.
+ **`virtualenv` 패키지** - 이 `virtualenv` 도구는 애플리케이션을 위한 개발 및 테스트 환경을 생성합니다. Elastic Beanstalk는 애플리케이션에서 필요하지 않은 추가 패키지를 설치하지 않고도 이 환경을 복제할 수 있습니다. 자세한 내용은 [virtualenv](https://virtualenv.pypa.io/en/latest/) 웹사이트를 참조하세요. Python을 설치한 후 다음 명령을 사용하여 `virtualenv` 패키지를 설치할 수 있습니다.

  ```
  $ pip install virtualenv
  ```

## 가상 환경 사용
<a name="python-common-setup-venv"></a>

필수 조건을 설치한 후 `virtualenv`으로 가상 환경을 설정하여 애플리케이션의 종속 항목을 설치합니다. 가상 환경을 사용하면 애플리케이션을 실행할 EC2 인스턴스에 설치 되어야 할 필수 패키지를 정확히 판별하여 설치할 수 있습니다.

**가상 환경을 설정하려면**

1. 명령줄 창을 열고 다음을 입력합니다:

   ```
   $ virtualenv /tmp/eb_python_app
   ```

   *eb\$1python\$1app*을 애플리케이션에 적합한 이름으로 변경합니다(애플리케이션의 이름을 사용해도 좋습니다). `virtualenv` 명령은 지정된 디렉터리에 사용자 가상 환경을 생성한 후 해당 작업의 결과를 출력합니다:

   ```
   Running virtualenv with interpreter /usr/bin/python
   New python executable in /tmp/eb_python_app/bin/python3.12
   Also creating executable in /tmp/eb_python_app/bin/python
   Installing setuptools, pip...done.
   ```

1. 가상 환경이 준비되면 환경의 `activate` 디렉터리에 있는 `bin` 스크립트를 실행하여 가상 환경을 실행합니다. 예를 들어 이전 단계에서 생성한 **eb\$1python\$1app** 환경을 시작하려면 다음을 입력합니다:

   ```
   $ source /tmp/eb_python_app/bin/activate
   ```

   가상 환경에서는 각 명령 프롬프트의 시작 부분에서 이름을 출력(예: `(eb_python_app)`)하여 사용자가 Python 가상 환경에 있다는 사실을 알려줍니다.

1. 가상 환경 사용을 중단하고 설치된 모든 라이브러리를 포함하여 시스템의 기본 Python 인터프리터로 돌아가려면 `deactivate` 명령을 실행하세요.

   ```
   (eb_python_app) $ deactivate
   ```

**참고**  
생성한 후에는 `activate` 스크립트를 다시 실행하여 언제든 가상 환경을 다시 시작할 수 있습니다.

## Elastic Beanstalk에 대해 Python 프로젝트 구성
<a name="python-common-configuring"></a>

Elastic Beanstalk CLI를 사용하여 Elastic Beanstalk에 배포하도록 Python 애플리케이션을 준비할 수 있습니다.

**Elastic Beanstalk에 배포하도록 Python 애플리케이션을 구성하려면**

1. [가상 환경](#python-common-setup-venv)에서 프로젝트 디렉터리 트리(`python_eb_app`)의 상단으로 돌아가 다음을 입력합니다.

   ```
   pip freeze >requirements.txt
   ```

   이 명령은 가상 환경에 설치된 패키지의 이름과 버전을 `requirements.txt`로 복사합니다. 예를 들어 *PyYAML* 패키지의 경우, *3.11* 버전이 가상 환경에 설치되어 있으며 파일은 다음 행을 포함됩니다;

   ```
   PyYAML==3.11
   ```

   애플리케이션을 개발하고 테스트하는 데 사용하는 동일한 패키지와 버전을 통해 Elastic Beanstalk는 애플리케이션의 Python 환경을 복제할 수 있습니다.

1. **eb init** 명령으로 EB CLI 리포지토리를 구성합니다. 프롬프트 메시지에 따라 리전, 플랫폼 및 기타 옵션을 선택합니다.

기본적으로 Elastic Beanstalk는 `application.py`라는 파일을 찾아 애플리케이션을 시작합니다. 이 파일이 생성한 Python 프로젝트에 존재하지 않는 경우, 애플리케이션 환경을 일부 조정해야 합니다. 또한 애플리케이션의 모듈을 로드할 수 있도록 환경 변수를 설정해야 합니다. 자세한 내용은 [Elastic Beanstalk Python 플랫폼 사용](create-deploy-python-container.md)를 참조하세요.