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.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ệ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