Site logo
Tác giả
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
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

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

Tài liệu tham khảo