# 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 "] [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](https://pypi.org/) nếu muốn chia sẻ package. ### **Lệnh phổ biến**
LệnhChứ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 `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 `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](https://vhtsoft.com "Công Ty Phần Mềm VHTSoft")**