

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

# Elastic Beanstalk에서 요구 서헝 파일을 사용하여 종속성 지정
<a name="python-configuration-requirements"></a>

이 주제에서는 필요한 다른 Python 패키지를 설치하도록 애플리케이션을 구성하는 방법을 설명합니다. 일반적으로 Python 애플리케이션은 타사 Python 패키지에 대한 종속 파일을 가지고 있습니다. Elastic Beanstalk Python 플랫폼에서는 애플리케이션에 필요한 Python 패키지를 지정하는 몇 가지 방법을 제공합니다.

## `pip` 및 `requirements.txt` 사용
<a name="python-configuration-requirements.txt"></a>

Python 패키지를 설치하기 위한 표준 도구는 `pip`입니다. 이는 단일 필수 요구 파일에 필요한 모든 패키지(버전 포함)를 지정할 수 있는 기능을 보유하고 있습니다. 필수 요구 파일에 대한 자세한 내용은 [필수 요구 파일 형식](https://pip.pypa.io/en/latest/reference/requirements-file-format/#requirements-file-format)을 참조하십시오.

`requirements.txt`이라는 파일을 생성하고 소스 번들의 최상위 디렉터리에 배치합니다. 다음은 Django `requirements.txt` 파일의 예입니다.

```
Django==2.2
mysqlclient==2.0.3
```

개발 환경에서 `pip freeze` 명령을 통해 필수 요구 파일을 생성할 수 있습니다.

```
~/my-app$ pip freeze > requirements.txt
```

필수 요구 파일에 애플리케이션에서 실제 사용되는 패키지만 포함되었는지 여부를 확인하려면 설치된 패키지만 포함하는 [가상 환경](python-development-environment.md#python-common-setup-venv)을 사용합니다. 가상 환경 외부에서 `pip freeze` 출력에는 운영 체제와 함께 제공되는 패키지 등 개발 장치에 설치된 모든 `pip` 패키지가 포함됩니다.

**참고**  
Elastic Beanstalk는 Amazon Linux AMI Python 플랫폼 버전에서 기본적으로 Pipenv 또는 Pipfiles를 지원하지 않습니다. Pipenv를 통해 애플리케이션 종속 파일을 관리하는 경우 다음 명령을 사용하여 `requirements.txt` 파일을 생성합니다.  

```
~/my-app$ pipenv lock -r > requirements.txt
```
자세한 내용은 Pipenv 설명서의 [requirements.txt 생성](https://pipenv.readthedocs.io/en/latest/advanced/#generating-a-requirements-txt)을 참조하십시오.

## Pipenv 및 `Pipfile` 사용
<a name="python-configuration-requirements.pipenv"></a>

Pipenv는 최신 Python 패키징 도구입니다. 이 도구는 종속 파일의 생성 및 관리에, 애플리케이션 virtualenv에 패키지 설치를 결합합니다. 자세한 내용은 [Pipenv: 인간 Python 개발 워크플로(Python Dev Workflow for Humans)](https://pipenv.readthedocs.io/en/latest/)를 참조하십시오.

Pipenv는 두 개의 파일을 유지 관리합니다: 
+ `Pipfile`— 이 파일에는 다양한 유형의 종속 파일 및 필수 요구가 포함되어 있습니다.
+ `Pipfile.lock`— 이 파일에는 결정적 빌드를 지원하는 버전 스냅샷이 포함되어 있습니다.

해당 파일들을 개발 환경에서 생성한 후, Elastic Beanstalk에 배포하는 소스 번들에 포함시킵니다. 이 두 파일에 대한 자세한 내용은 [Pipfile 및 Pipfile.lock 예제](https://pipenv.pypa.io/en/latest/basics/#)를 참조하십시오.



다음의 예제에서는 Pipenv를 통해 Django 및 Django REST 프레임워크를 설치합니다. 이 명령을 통해 `Pipfile` 및 `Pipfile.lock`파일을 생성합니다.

```
~/my-app$ pipenv install django
~/my-app$ pipenv install djangorestframework
```

 

## 우선 순위
<a name="python-configuration-requirements.precedence"></a>

본 설명의 필수 요구 파일 중 하나 이상이 포함될 경우 Elastic Beanstalk는 해당 파일 중 하나만 사용합니다. 다음 목록은 우선 순위를 내림차순으로 보여 줍니다.

1. `requirements.txt`

1. `Pipfile.lock`

1. `Pipfile`

**참고**  
2023년 3월 7일 Amazon Linux 2 플랫폼 릴리스부터 이러한 파일이 두 개 이상 제공 될 경우, Elastic Beanstalk는 배포 과정에서 복수 개의 파일 중 어떤 종속 파일이 사용되었는지를 콘솔 메시지에 표시합니다.

다음 단계에서는 인스턴스를 배포할 시 Elastic Beanstalk가 종속 파일을 설치하는 로직을 설명합니다.
+ `requirements.txt`파일이 있으면 `pip install -r requirements.txt`명령을 사용합니다.
+ 2023년 3월 7일 Amazon Linux 2 플랫폼 릴리스부터 `requirements.txt` 파일이 없지만 `Pipfile.lock`파일이 있는 경우 `pipenv sync`명령을 사용해야 합니다. 해당 릴리스 이전에는 `pipenv install --ignore-pipfile`을 사용했습니다.
+ `requirements.txt` 파일도 `Pipfile.lock` 파일도 없지만 `Pipfile`이 있는 경우 `pipenv install --skip-lock`명령을 사용합니다.
+ 세 가지 필구 요구 파일을 찾을 수 없는 경우 모든 애플리케이션 종속 파일을 설치하지 않습니다.