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êngTất cả-in-one
Cần nhiều file config khác nhauDùng duy nhất pyproject.toml
Khó pin version chính xácPoetry lock chính xác
Không tự động tạo môi trườngPoetry tự tạo virtualenv
Không có tính năng publishPoetry 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.toml và poetry.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ệnhChức năng
poetry new myprojectTạo mới một project
poetry initTạo pyproject.toml trong thư mục hiện tại
poetry add <package>Thêm dependency
poetry installCài dependencies từ pyproject.toml
poetry updateCập nhật toàn bộ thư viện
poetry lockTạo/cập nhật poetry.lock
poetry run <cmd>Chạy lệnh trong môi trường ảo
poetry shellMở 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