# 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 "]
[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**
**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")**