

Amazon CodeCatalyst는 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [CodeCatalyst에서 마이그레이션하는 방법](migration.md) 단원을 참조하십시오.

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

# Python 사용
<a name="packages-python"></a>

이 항목에서는 CodeCatalyst와 함께 Python 패키지 관리자인 `pip`, Python 패키지 게시 유틸리티인 `twine`을 사용하는 방법에 대해 설명합니다.

**Topics**
+ [pip 구성 및 Python 패키지 설치](packages-python-pip.md)
+ [Twine 구성 및 Python 패키지 게시](packages-python-twine.md)
+ [Python 패키지 이름 정규화](python-name-normalization.md)
+ [Python 호환성](packages-python-compatibility.md)

# pip 구성 및 Python 패키지 설치
<a name="packages-python-pip"></a>

`pip`을 CodeCatalyst와 함께 사용하려면 패키지 리포지토리에 `pip`를 연결하고 인증을 위한 개인 액세스 토큰을 제공해야 합니다. CodeCatalyst 콘솔에서 패키지 리포지토리에 `pip`을 연결하기 위한 지침을 볼 수 있습니다. `pip`을 CodeCatalyst에 인증하고 연결한 후 `pip` 명령을 실행할 수 있습니다.

**Contents**
+ [pip를 사용하여 CodeCatalyst에서 Python 패키지 설치](#pip-install)
+ [CodeCatalyst를 통해 PyPI에서 패키지 사용](#pip-install-pypi)
+ [pip 명령 지원](#pip-command-support)
  + [리포지토리와 상호 작용하는 지원되는 명령](#supported-pip-commands-that-interact-with-a-repository)
  + [지원되는 클라이언트 측 명령](#supported-pip-client-side-commands)

## pip를 사용하여 CodeCatalyst에서 Python 패키지 설치
<a name="pip-install"></a>

다음 지침은 CodeCatalyst 패키지 리포지토리 또는 업스트림 리포지토리 중 하나에서 Python 패키지를 설치하도록 `pip`를 구성하는 방법을 설명합니다.

**CodeCatalyst 패키지 리포지토리에서 Python 패키지를 설치하기 위해 `pip`를 구성하고 사용하려면**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

1. 프로젝트의 개요 페이지에서 **패키지**를 선택합니다.

1. 패키지 리포지토리 목록에서 패키지 리포지토리를 선택합니다.

1. **리포지토리에 연결**을 선택합니다.

1. **리포지토리에 연결** 대화 상자의 패키지 관리자 클라이언트 목록에서 **pip**를 선택합니다.

1. CodeCatalyst로 pip를 인증하려면 개인 액세스 토큰(PAT)이 필요합니다. 이미 토큰이 있으면 그 토큰을 사용하면 됩니다. 없는 경우에는 여기에서 만들 수 있습니다.

   1. **토큰 생성**을 선택합니다.

   1. PAT를 복사하려면 **복사**를 선택합니다.
**주의**  
대화 상자를 닫으면 PAT를 다시 보거나 복사할 수 없습니다.

1. `pip config` 명령 사용하여 CodeCatalyst 레지스트리 URL 및 자격 증명을 설정합니다. 다음 값을 교체합니다.
**참고**  
콘솔 지침에서 복사하는 경우 다음 값을 업데이트해야 하며 변경해서는 안 됩니다.
   + *username*을 CodeCatalyst 사용자 이름으로 바꿉니다.
   + *PAT*를 CodeCatalyst PAT로 바꿉니다.
   + *space\$1name*을 CodeCatalyst 스페이스 이름으로 바꿉니다.
   + *proj\$1name*을 CodeCatalyst 프로젝트 이름으로 바꿉니다.
   + *my\$1repo*를 CodeCatalyst 패키지 리포지토리 이름으로 바꿉니다.

   ```
   pip config set global.index-url https://username:PAT@https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/simple/
   ```

1. 패키지가 리포지토리 또는 업스트림 리포지토리 중 하나에 있다고 할 경우, `pip install`을 사용하여 패키지를 설치할 수 있습니다. 예를 들어 다음 명령을 사용하여 `requests` 패키지를 설치할 수 있습니다.

   ```
   pip install requests
   ```

   `-i` 옵션을 사용하여 CodeCatalyst 리포지토리 대신 [https://pypi.org](https://pypi.org)에서 패키지를 설치하는 것으로 일시적으로 되돌릴 수 있습니다.

   ```
   pip install -i https://pypi.org/simple requests
   ```

## CodeCatalyst를 통해 PyPI에서 패키지 사용
<a name="pip-install-pypi"></a>

**PyPI**에 대한 업스트림 연결이 있는 리포지토리를 구성하여 CodeCatalyst 리포지토리를 통해 [Python 패키지 인덱스(PyPI)](https://www.pypi.org/)에서 Python 패키지를 사용할 수 있습니다. **PyPI**에서 사용하는 패키지는 CodeCatalyst 리포지토리로 수집하여 저장됩니다.

**PyPI에서 패키지를 사용하려면**

1. 아직 구성하지 않은 경우 [pip를 사용하여 CodeCatalyst에서 Python 패키지 설치](#pip-install)의 단계에 따라 CodeCatalyst 패키지 리포지토리로 pip를 구성합니다.

1. 리포지토리가 **PyPI**를 업스트림 소스로 추가했는지 확인합니다. [업스트림 리포지토리 추가](packages-upstream-repositories-add.md)의 지침에 따르고 **PyPI 스토어** 리포지토리를 선택하여, 어떤 업스트림 소스가 추가되었는지 확인하거나 **PyPI**를 업스트림 소스로 추가할 수 있습니다.

업스트림 리포지토리에서 패키지를 요청하는 방법에 대한 자세한 내용은 [업스트림 리포지토리가 포함된 패키지 버전 요청](packages-upstream-repositories-request.md) 섹션을 참조하세요.

## pip 명령 지원
<a name="pip-command-support"></a>

다음 섹션에는 지원되지 않는 특정 명령 외에도 CodeCatalyst 리포지토리에서 지원하는 pip 명령이 요약되어 있습니다.

**Topics**
+ [리포지토리와 상호 작용하는 지원되는 명령](#supported-pip-commands-that-interact-with-a-repository)
+ [지원되는 클라이언트 측 명령](#supported-pip-client-side-commands)

### 리포지토리와 상호 작용하는 지원되는 명령
<a name="supported-pip-commands-that-interact-with-a-repository"></a>

이 섹션에는 `pip` 클라이언트가 구성된 레지스트리에 하나 이상의 요청을 보내는 `pip` 명령이 나열되어 있습니다. CodeCatalyst 패키지 리포지토리에 대해 이러한 명령을 간접적으로 호출했을 때 제대로 작동하는 것으로 확인되었습니다.


****  

| 명령 | 설명 | 
| --- | --- | 
|   [install](https://pip.pypa.io/en/stable/reference/pip_install/)   |  패키지를 설치합니다.  | 
|   [download](https://pip.pypa.io/en/stable/reference/pip_download/)   |  패키지를 다운로드합니다.  | 

CodeCatalyst는 `pip search`를 구현하지 않습니다. `pip`를 CodeCatalyst 패키지 리포지토리로 구성한 경우 `pip search`를 실행하면 [PyPI](https://pypi.org/)에서 패키지를 검색하고 표시합니다.

### 지원되는 클라이언트 측 명령
<a name="supported-pip-client-side-commands"></a>

이러한 명령은 리포지토리와 직접 상호 작용할 필요가 없으므로 CodeCatalyst는 명령을 지원하기 위해 아무 것도 할 필요가 없습니다.


****  

| 명령 | 설명 | 
| --- | --- | 
|   [uninstall](https://pip.pypa.io/en/stable/reference/pip_uninstall/)   |  패키지를 제거합니다.  | 
|   [freeze](https://pip.pypa.io/en/stable/reference/pip_freeze/)   |  설치된 패키지를 요구 사항 형식으로 출력합니다.  | 
|   [list](https://pip.pypa.io/en/stable/reference/pip_list/)   |  설치된 패키지를 나열합니다.  | 
|   [show](https://pip.pypa.io/en/stable/reference/pip_show/)   |  설치된 패키지에 대한 정보를 표시합니다.  | 
|   [check](https://pip.pypa.io/en/stable/reference/pip_check/)   |  설치된 패키지에 호환되는 종속성이 있는지 확인합니다.  | 
|   [config](https://pip.pypa.io/en/stable/reference/pip_config/)   |  로컬 및 글로벌 구성을 관리합니다.  | 
|   [wheel](https://pip.pypa.io/en/stable/reference/pip_wheel/)   |  요구 사항에 맞게 휠을 빌드합니다.  | 
|   [hash](https://pip.pypa.io/en/stable/reference/pip_hash/)   |  패키지 아카이브의 해시를 계산합니다.  | 
|   [completion](https://pip.pypa.io/en/stable/user_guide/#command-completion)   |  명령 완성을 돕습니다.  | 
|   [debug](https://pip.pypa.io/en/stable/reference/pip_debug/)   |  디버깅에 유용한 정보를 표시합니다.  | 
|  help  |  명령에 대한 도움말을 표시합니다.  | 

# Twine 구성 및 Python 패키지 게시
<a name="packages-python-twine"></a>

`twine`을 CodeCatalyst와 함께 사용하려면 패키지 리포지토리에 `twine`를 연결하고 인증을 위한 개인 액세스 토큰을 제공해야 합니다. CodeCatalyst 콘솔에서 패키지 리포지토리에 `twine`을 연결하기 위한 지침을 볼 수 있습니다. `twine`을 CodeCatalyst에 인증하고 연결한 후 `twine` 명령을 실행할 수 있습니다.

## Twine을 사용하여 CodeCatalyst에 패키지 게시
<a name="packages-twine-publish"></a>

다음 지침은 CodeCatalyst 패키지 리포지토리를 인증하고 `twine`에 연결하는 방법을 설명합니다.

**`twine`을 구성하고 사용하여 CodeCatalyst 패키지 리포지토리에 패키지를 게시하려면**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

1. 프로젝트의 개요 페이지에서 **패키지**를 선택합니다.

1. 패키지 리포지토리 목록에서 패키지 리포지토리를 선택합니다.

1. **리포지토리에 연결**을 선택합니다.

1. **리포지토리에 연결** 대화 상자의 패키지 관리자 클라이언트 목록에서 **Twine**을 선택합니다.

1. CodeCatalyst 를 사용하여 twine을 인증하려면 개인 액세스 토큰(PAT)이 필요합니다. 이미 토큰이 있으면 그 토큰을 사용하면 됩니다. 없는 경우에는 여기에서 만들 수 있습니다.

   1. **토큰 생성**을 선택합니다.

   1. PAT를 복사하려면 **복사**를 선택합니다.
**주의**  
대화 상자를 닫으면 PAT를 다시 보거나 복사할 수 없습니다.

1. `.pypirc` 파일을 사용하거나 환경 변수를 사용하여 twine를 구성할 수 있습니다.

   1. **`.pypirc` 파일로 구성하려면**

      원하는 편집기에서 `~/.pypirc` 파일을 엽니다.

      이전 단계에서 생성 및 복사한 PAT, 사용자 이름 및 리포지토리를 포함하여 CodeCatalyst용 인덱스 서버를 추가합니다. 다음 값을 교체합니다.
**참고**  
콘솔 지침에서 복사하는 경우 다음 값을 업데이트해야 하며 변경해서는 안 됩니다.
      + *username*을 CodeCatalyst 사용자 이름으로 바꿉니다.
      + *PAT*를 CodeCatalyst PAT로 바꿉니다.
      + *space\$1name*을 CodeCatalyst 스페이스 이름으로 바꿉니다.
      + *proj\$1name*을 CodeCatalyst 프로젝트 이름으로 바꿉니다.
      + *my\$1repo*를 CodeCatalyst 패키지 리포지토리 이름으로 바꿉니다.

      ```
      [distutils]
      index-servers = proj-name/repo-name
      
      [proj-name/repo-name]
      repository = https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/
      password = PAT
      username = username
      ```

   1. **환경 변수를 구성하려면**

      다음 환경 변수를 설정합니다. `TWINE_REPOSITORY_URL` 값에서 *space\$1name*, *proj\$1name*, *repo\$1name*을 CodeCatalyst 스페이스, 프로젝트, 패키지 리포지토리 이름으로 업데이트합니다.

      ```
      export TWINE_USERNAME=username
      ```

      ```
      export TWINE_PASSWORD=PAT
      ```

      ```
      export TWINE_REPOSITORY_URL="https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/"
      ```

1. `twine upload` 명령을 사용하여 Python 배포를 게시합니다.

# Python 패키지 이름 정규화
<a name="python-name-normalization"></a>

CodeCatalyst는 패키지 이름을 저장하기 전에 정규화합니다. 즉, CodeCatalyst의 패키지 이름은 패키지가 게시될 때 제공된 이름과 다를 수 있습니다.

Python 패키지의 경우, 정규화를 수행할 때 패키지 이름은 소문자와 `.`, `-` 및 `_` 문자의 모든 인스턴스가 단일 `-` 문자로 대체됩니다. 따라서 `pigeon_cli` 및 `pigeon.cli` 패키지 이름은 `pigeon-cli`과 같이 정규화되어 저장됩니다. 정규화되지 않은 이름은 pip 및 twine에서 사용할 수 있습니다. Python 패키지 이름 정규화에 관한 자세한 내용은 Python 설명서에서 [PEP 503](https://www.python.org/dev/peps/pep-0503/#normalized-names)을 참조하세요.

# Python 호환성
<a name="packages-python-compatibility"></a>

 CodeCatalyst는 `/simple/` API 지원하지 않지만 `Legacy` API 작업을 지원합니다. CodeCatalyst는 PyPI의 `XML-RPC` 또는 `JSON` API 작업을 지원하지 않습니다.

자세한 내용은 Python Packaging Authority의 GitHub 리포지토리에서 다음 섹션을 참조하세요.
+ [Legacy API](https://warehouse.pypa.io/api-reference/legacy.html)
+ [XML-RPC API](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/xml-rpc.rst)
+ [JSON API](https://docs.pypi.org/api/json/)