- Tác giả

- Name
- Nguyễn Đức Xinh
- Ngày xuất bản
- Ngày xuất bản
Hướng dẫn cài đặt và quản lý Package trong Python: Từ pip đến Virtual Environment - Part 2
Requirements.txt - Quản lý Dependencies
Tạo Requirements File
# Tạo requirements.txt từ environment hiện tại
pip freeze > requirements.txt
# Tạo requirements.txt chỉ với packages chính
pip-tools compile requirements.in
Cấu trúc Requirements.txt
# requirements.txt
Django==3.2.0
requests>=2.25.1
numpy==1.21.0
pandas>=1.3.0,<2.0.0
pytest==6.2.4
# Development dependencies
-r requirements-dev.txt
# Git repositories
git+https://github.com/user/repo.git@v1.0.0
# Local packages
-e ./local_package
Best Practices cho Requirements
- Phân chia requirements files:
# requirements.txt - Production dependencies
Django==3.2.0
requests>=2.25.1
# requirements-dev.txt - Development dependencies
pytest==6.2.4
black==21.5b0
flake8==3.9.2
# requirements-test.txt - Testing dependencies
pytest-django==4.4.0
factory-boy==3.2.0
- Sử dụng pip-tools:
# Cài đặt pip-tools
pip install pip-tools
# Tạo requirements.in
echo "Django>=3.0" > requirements.in
# Compile thành requirements.txt
pip-compile requirements.in
# Sync environment
pip-sync requirements.txt
So sánh các công cụ Package Management
| Công cụ | Ưu điểm | Nhược điểm | Phù hợp cho |
|---|---|---|---|
| pip + venv | Đơn giản, built-in Python | Không có dependency resolver mạnh | Dự án Python thuần |
| conda | Quản lý cả Python và system packages | Lớn, phức tạp | Data Science, Scientific Computing |
| pipenv | Kết hợp pip và virtualenv | Chậm, có thể có bugs | Web development |
| poetry | Modern, tốt cho packaging | Learning curve cao | Libraries, applications |
| pip-tools | Tách biệt high-level và low-level deps | Cần thêm công cụ | Enterprise projects |
Các Best Practices
1. Luôn sử dụng Virtual Environment
# Tạo project mới
mkdir myproject
cd myproject
python -m venv venv
source venv/bin/activate # macOS/Linux
pip install --upgrade pip
2. Pin exact versions trong production
# Tốt cho development
requests>=2.25.0
# Tốt cho production
requests==2.28.1
3. Sử dụng .gitignore cho Python projects
# Virtual environments
venv/
env/
ENV/
# Python cache
__pycache__/
*.pyc
*.pyo
# Distribution packages
dist/
build/
*.egg-info/
4. Định kỳ audit security
# Kiểm tra security vulnerabilities
pip install safety
safety check
# Kiểm tra với pip-audit
pip install pip-audit
pip-audit
Kết luận
Package management trong Python là một kỹ năng thiết yếu mà mọi developer cần nắm vững. Việc sử dụng đúng công cụ và tuân thủ best practices sẽ giúp:
- Tránh xung đột dependencies: Virtual environments đảm bảo mỗi dự án có môi trường riêng biệt
- Reproducible builds: Requirements.txt và version pinning đảm bảo tính nhất quán
- Security: Thường xuyên audit và update dependencies
- Maintainability: Code dễ bảo trì và deploy
