웹사이트 검색

Ubuntu 22.04에서 Python 종속성을 관리하기 위해 Poetry를 설치하는 방법


소개

Poetry는 배포를 위해 Python 프로젝트를 빌드하고 패키징할 수 있는 Python용 종속성 관리자입니다. 종속성 관리자로서 일관되고 포함된 가상 환경을 유지하기 위한 도구와 함께 제공됩니다. 또한 requirements.txt와 같은 다른 형식의 종속성 관리를 사용하여 워크플로와 통합하는 도구가 있습니다.

이 튜토리얼에서는 공식 설치 스크립트를 사용하여 Poetry를 설치하고 가상 환경으로 Poetry 프로젝트를 설정한 다음 프로젝트의 종속성을 추가 및 설치합니다.

전제 조건

  • Ubuntu 22.04용 초기 서버 설정 가이드에 따라 sudo 권한이 있고 방화벽이 활성화된 루트가 아닌 사용자로 설정된 Ubuntu 22.04 서버.
  • Python 3을 설치하고 Ubuntu 22.04 서버에서 프로그래밍 환경을 설정하는 방법의 1단계에 따라 컴퓨터에 설치된 최신 버전의 Python 3.

1단계 - 시 설치

Poetry는 이 튜토리얼을 통해 설치된 에서 제공하는 공식 설치 스크립트를 사용하여 설치됩니다. 다음 명령을 입력합니다.

  1. curl -sSL https://install.python-poetry.org | python3 -
…
[secondary_label Output]
Poetry (1.2.1) is installed now. Great!

To get started you need Poetry's bin directory (/home/sammy/.local/bin) in your `PATH`
environment variable.

Add `export PATH="/home/sammy/.local/bin:$PATH"` to your shell configuration file.

Alternatively, you can call Poetry explicitly with `/home/sammy/.local/bin/poetry`.
…

설치가 완료되면 Poetry는 명령줄에서 poetry를 사용할 수 있도록 bin 디렉토리를 PATH에 추가하라는 메시지를 표시합니다. Bash가 있는 Ubuntu에서는 nano 또는 선호하는 텍스트 편집기를 사용하여 ~/.bashrc 파일을 열어 이 작업을 수행할 수 있습니다.

  1. nano ~/.bashrc

파일 끝에 다음 줄을 추가합니다.

. . .
export PATH="/home/sammy/.local/bin:$PATH"

nano를 사용하여 파일을 저장하고 종료합니다. CTRL+X를 눌러 종료하고 Y를 눌러 변경 사항을 저장하면 됩니다.

다음으로 현재 세션에 변경 사항을 적용합니다.

  1. source ~/.bashrc

현재 poetry 명령을 사용할 수 있는지 확인하려면 다음을 입력하여 현재 Poetry 버전을 표시합니다.

  1. poetry --version
Output
Poetry (version 1.2.1)

이제 Poetry 설치가 완료되었으며 Poetry 프로젝트 설정을 진행할 수 있습니다.

2단계 - 시 프로젝트 설정

새 Poetry 프로젝트를 생성하여 시작합니다. 이 프로젝트는 종속성을 설치하고 관리할 때 사용할 가상 환경과 함께 제공됩니다. 이 튜토리얼에서는 프로젝트 이름 sammy_poetry를 사용하지만 원하는 이름을 자유롭게 선택하세요.

  1. poetry new sammy_poetry

다음으로 새 프로젝트 디렉터리로 이동합니다.

  1. cd sammy_poetry

이제 필요한 상용구 파일이 포함된 새 Poetry 프로젝트가 생성되었습니다. 새로 생성된 프로젝트 파일을 보려면 ls 명령을 사용하십시오.

  1. ls
Output
README.md dist pyproject.toml sammy_poetry tests

참고: 사용하려는 기존 프로젝트가 있는 경우 다른 명령을 사용하여 Poetry에서 이를 프로젝트로 인식하도록 할 수 있습니다. 기존 프로젝트의 디렉터리로 이동한 후 다음 명령을 입력합니다.

  1. poetry init

이렇게 하면 기존 프로젝트에 필요한 모든 파일이 생성되고 새 프로젝트인 것처럼 이 자습서를 계속할 수 있습니다.

3단계 - 종속성 추가

프로젝트에 종속성을 추가하기 전에 Poetry가 종속성을 유지하는 데 사용하는 파일을 검사하고 이해하는 것부터 시작합니다. Poetry 프로젝트 디렉토리에는 종속성 목록이 포함된 자동 생성된 pyproject.toml 파일이 있습니다. 다음과 같이 열고 검사합니다.

  1. nano pyproject.toml
[tool.poetry]
name = "sammy-poetry"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
packages = [{include = "sammy_poetry"}]

[tool.poetry.dependencies]
python = "^3.10"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

tool.poetry.dependencies 아래에 나열된 종속성과 함께 tool.poetry 아래에도 메타데이터가 있습니다. 이름, 이메일 및 프로젝트 설명과 같은 자신의 정보로 이 메타데이터를 자유롭게 사용자 정의하십시오. build-system 블록에는 현재 Poetry가 패키지를 빌드하는 방법에 대한 사양이 포함되어 있으며 지금은 그대로 둘 수 있습니다.

한 가지 주의할 점은 Python 3.10은 최신 버전이지만 리소스를 많이 요구할 수 있으며 시스템에 따라 문제가 될 수 있습니다. 대부분의 Python 라이브러리에는 최소한 버전 3.8만 필요합니다. 프로젝트에서 종속성으로 사용하는 Python 버전을 변경하려는 경우 이 자습서의 4단계에서 버전 종속성을 고정하는 방법을 다룹니다.

현재 상태에서 프로젝트에는 Python 자체 외에는 종속성이 없습니다. Poetry는 명령줄에서 직접 프로젝트에 새로운 종속성을 추가할 수 있습니다. poetry add 명령을 사용하여 Poetry는 tool.poetry.dependencies 블록에 종속성 줄을 추가하고 동시에 종속성을 설치합니다.

pyproject.toml 파일을 검사한 후 편집기를 종료합니다. 예를 들어 add 명령을 사용하여 설치하는 것과 함께 널리 사용되는 Python HTTP 라이브러리 요청을 프로젝트의 종속성에 추가합니다. 이 라이브러리를 사용하면 최소한의 상용구 코드로 HTTP 요청을 보낼 수 있으며 HTTP를 통해 인터페이스하는 애플리케이션에 유용합니다. 하지만 이 데모의 목적에는 어떤 패키지라도 충분합니다. 다음 명령을 입력합니다.

  1. poetry add requests
Output
Creating virtualenv sammy-poetry-i9Ouy_MV-py3.10 in /home/sammy/.cache/pypoetry/virtualenvs Using version ^2.28.1 for requests Updating dependencies Resolving dependencies... (0.3s) Writing lock file Package operations: 5 installs, 0 updates, 0 removals • Installing certifi (2022.9.24) • Installing charset-normalizer (2.1.1) • Installing idna (3.4) • Installing urllib3 (1.26.12) • Installing requests (2.28.1)

pyproject.toml 파일에 추가하고 requests를 설치하는 것과 함께 add 명령은 가상 환경의 초기화도 처리합니다. 또한 요청에는 자체 종속성이 있습니다. Poetry는 requests 자체를 설치하기 전에 이러한 모든 종속성을 자동으로 설치합니다.

pyproject.toml 파일이 다음과 같이 업데이트됩니다.

. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "^2.28.1"
. . .

이렇게 하면 requests가 항상 설치됩니다. ^는 설치할 최소 허용 버전이며 더 높은 버전도 허용됨을 나타냅니다.

4단계 - 종속성 제거 및 고정

현재 설치된 종속성과 pyproject.toml 파일에 나열된 종속성 간의 일관성을 유지하기 위해 Poetry는 잠금 파일을 사용합니다. Poetry는 설치 프로세스 중에 이 파일에서 직접 읽습니다. 즉, pyproject.toml 파일을 직접 편집하여 종속성을 변경하면 다음과 같은 오류나 경고가 발생할 수 있습니다.

Output
. . . Warning: poetry.lock is not consistent with pyproject.toml. You may be getting improper dependencies. Run `poetry lock [--no-update]` to fix it. . . .

따라서 종속성을 제거하거나 해당 버전을 편집해야 하는 경우 poetry remove 명령을 사용해야 합니다. pyproject.toml 파일을 수동으로 편집할 수 있지만 잠금 파일을 고려하고 가상 환경을 수동으로 활성화해야 합니다. 따라서 requests의 버전을 변경하려는 시나리오에서는 먼저 다음 명령을 사용하여 제거합니다.

  1. poetry remove requests
Output
Updating dependencies Resolving dependencies... (0.1s) Writing lock file Package operations: 0 installs, 0 updates, 5 removals • Removing certifi (2022.9.24) • Removing charset-normalizer (2.1.1) • Removing idna (3.4) • Removing requests (2.28.1) • Removing urllib3 (1.26.12)

이제 requests가 제거되었으므로 고정된 종속성으로 다시 추가할 수 있습니다. 종속성을 사용하면 프로젝트의 특정 버전에서 라이브러리를 유지하려는 경우가 많습니다. 이는 라이브러리가 시간이 지남에 따라 변경됨에 따라 호환성 문제로 인해 종종 발생하며 프로젝트 일관성을 유지하는 데 도움이 될 수 있습니다. 이를 종속성 고정이라고 합니다.

예를 들어, add 명령을 실행할 때 기본값인 최신 이외의 버전에 요청을 고정합니다. 대신 requests의 PyPI 기록에서 찾을 수 있는 이전의 유효한 릴리스인 2.26.0에 고정합니다.

  1. poetry add requests@2.26.0
Output
Updating dependencies Resolving dependencies... (0.3s) Writing lock file Package operations: 5 installs, 0 updates, 0 removals • Installing certifi (2022.9.24) • Installing charset-normalizer (2.0.12) • Installing idna (3.4) • Installing urllib3 (1.26.12) • Installing requests (2.26.0)

이제 pyproject.toml 파일에서 다음을 찾을 수 있습니다.

. . .
[tool.poetry.dependencies]
python = "^3.10"
requests = "2.26.0"
. . .

이는 요청이 항상 특히 버전 2.26.0으로 설치되도록 지정합니다.

결론

이 자습서에서는 처음부터 또는 기존 프로젝트 내에서 Poetry를 설치하고 Poetry 프로젝트를 만들었습니다. 또한 종속성을 추가한 다음 가상 환경 내에 해당 종속성을 설치했습니다. 또한 프로젝트에 고정된 종속성으로 추가하기 전에 종속성을 제거했습니다. 다음으로 Ubuntu 22.04에서 Poetry를 사용하여 Python 패키지를 PyPI에 게시하는 방법에 대한 이 자습서를 통해 Poetry의 더 많은 기능을 탐색할 수 있습니다.