Nhảy đến nội dung chính

Giới thiệu Poetry

Poetry – một công cụ hiện đại để quản lý gói (package) và môi trường (environment) trong Python.

Poetry là gì?

Poetry là một công cụ giúp bạn:

  • Quản lý dependencies (thư viện phụ thuộc).

  • Quản lý và build package Python.

  • Tạo môi trường ảo tự động.

  • Publish package lên PyPI dễ dàng.

Poetry thay thế việc bạn phải dùng pip, venv, requirements.txt, setup.py, pyproject.toml,... riêng lẻ — tất cả tích hợp trong một công cụ.

Tại sao nên dùng Poetry?

Truyền thống (pip + venv + requirements) Poetry
Quản lý môi trường và dependency riêng Tất cả-in-one
Cần nhiều file config khác nhau Dùng duy nhất pyproject.toml
Khó pin version chính xác Poetry lock chính xác
Không tự động tạo môi trường Poetry tự tạo virtualenv
Không có tính năng publish Poetry có lệnh poetry publish

Khi nào nên dùng Poetry?

  • Khi bạn muốn quản lý dependency dễ dàng và sạch sẽ.

  • Khi bạn muốn tạo project có thể publish lên PyPI.

  • Khi bạn làm việc nhóm hoặc CI/CD cần môi trường chính xác.

  • Khi bạn phát triển package, lib hoặc ứng dụng production.

Cài đặt Poetry

curl -sSL https://install.python-poetry.org | python3 -
Sau đó thêm vào shell config nếu cần:
export PATH="$HOME/.local/bin:$PATH"

poetry --version

Khởi tạo project với Poetry

poetry new myproject
cd myproject

Cấu trúc thư mục sẽ được tạo sẵn:

myproject/
├── myproject/
│   └── __init__.py
├── tests/
├── pyproject.toml
└── README.rst

Thêm dependency

poetry add requests

Poetry sẽ:

  • Cài thư viện vào virtualenv riêng.

  • Ghi lại vào pyproject.tomlpoetry.lock.

Muốn thêm dev-dependency?

poetry add --dev black

Tạo môi trường và chạy shell

poetry shell

Giống như source venv/bin/activate — bạn sẽ vào môi trường ảo của Poetry.

Hoặc chạy lệnh trong môi trường mà không cần shell:

poetry run python script.py

pyproject.toml là gì?

Đây là file cấu hình trung tâm của project Python hiện đại.
Poetry dùng file này để:

  • Khai báo tên project, version, mô tả...

  • Danh sách dependencies.

  • Cấu hình build.

Ví dụ:

[tool.poetry]
name = "VHTSoft"
version = "0.1.0"
description = "Dự án tuyệt vời"
authors = ["Bạn <admin@vhtsoft.com>"]

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

[tool.poetry.dev-dependencies]
black = "^23.0.0"

Build và Publish

poetry build
poetry publish --username __token__ --password pypi-***

Bạn có thể đăng lên PyPI nếu muốn chia sẻ package.

Lệnh phổ biến

Lệnh Chức năng
poetry new myproject Tạo mới một project
poetry init Tạo pyproject.toml trong thư mục hiện tại
poetry add <package> Thêm dependency
poetry install Cài dependencies từ pyproject.toml
poetry update Cập nhật toàn bộ thư viện
poetry lock Tạo/cập nhật poetry.lock
poetry run <cmd> Chạy lệnh trong môi trường ảo
poetry shell Mở môi trường ảo
poetry build Đóng gói project
poetry publish Đăng lên PyPI

Tác giả: Đỗ Ngọc Tú
Công Ty Phần Mềm VHTSoft