Giới thiệu về Makefile: Hướng dẫn dành cho người mới bắt đầu về tự động hóa xây dựng trong Python
By hientd, at: 09:55 Ngày 29 tháng 12 năm 2023
Thời gian đọc ước tính: __READING_TIME__ minutes


Tự động hóa là một phần quan trọng trong phát triển phần mềm hiện đại, giúp các nhà phát triển tiết kiệm thời gian và giảm lỗi. Các công cụ như các script bash
hoặc nền tảng CI/CD được sử dụng rộng rãi, Makefile vẫn là một trong những cách hiệu quả và linh hoạt nhất để tự động hóa các tác vụ. Được thiết kế ban đầu cho các dự án C/C++, Makefile cũng mạnh mẽ không kém đối với các nhà phát triển Python. Hướng dẫn này giới thiệu Makefile và cách sử dụng nó trong các dự án Python.
Makefile là gì?
Makefile là một tập tin văn bản đơn giản định nghĩa các quy tắc để tự động hóa các tác vụ như xây dựng, kiểm thử và triển khai mã. Nó hoạt động với lệnh make
, lệnh này đọc Makefile để thực thi các tác vụ một cách hiệu quả.
Tại sao sử dụng Makefile trong các dự án Python?
- Tự động hóa: Giản lược các tác vụ lặp đi lặp lại như chạy kiểm thử hoặc định dạng mã.
- Tính nhất quán: Cung cấp một cách chuẩn để các thành viên trong nhóm thực thi các tác vụ.
- Khả năng di chuyển: Hoạt động trên các môi trường khác nhau mà không cần phụ thuộc nhiều.
Cấu trúc cơ bản của Makefile
Makefile bao gồm mục tiêu, phụ thuộc và lệnh:
target: dependencies
command
- Mục tiêu: Tên của tác vụ.
- Phụ thuộc: Các tập tin hoặc mục tiêu mà mục tiêu hiện tại phụ thuộc vào.
- Lệnh: Lệnh shell được thực thi khi mục tiêu chạy.
Lưu ý: Các lệnh phải được thụt lề bằng tab, không phải khoảng trắng.
Viết Makefile đầu tiên cho Python
Bước 1: Thiết lập dự án của bạn
Tạo cấu trúc dự án Python:
my_project/
│
├── Makefile
├── requirements.txt
├── src/
│ ├── app.py
│ └── utils.py
└── tests/
├── test_app.py
└── test_utils.py
Bước 2: Tạo Makefile
Đây là một ví dụ Makefile:
# Định nghĩa biến
PYTHON = python3
PIP = pip3
# Cài đặt phụ thuộc
install:
$(PIP) install -r requirements.txt
# Chạy kiểm thử
test:
$(PYTHON) -m pytest tests/
# Định dạng mã sử dụng black
format:
$(PYTHON) -m black src/ tests/
# Kiểm tra mã sử dụng flake8
lint:
$(PYTHON) -m flake8 src/ tests/
# Dọn dẹp các tập tin tạm thời
clean:
find . -name '__pycache__' -exec rm -rf {} +
find . -name '*.pyc' -exec rm -f {} +
Bước 3: Chạy tác vụ với make
- Cài đặt phụ thuộc:
make install
- Chạy kiểm thử:
make test
- Định dạng mã:
make format
- Kiểm tra mã:
make lint
- Dọn dẹp tập tin tạm thời:
make clean
Giải thích Makefile
1. Biến
Các biến như PYTHON
và PIP
làm cho Makefile dễ dàng thích ứng với các môi trường khác nhau.
2. Mục tiêu và Lệnh
Mỗi mục tiêu (ví dụ: install
, test
) tương ứng với một tác vụ, và lệnh được thực thi khi mục tiêu được gọi.
Khi nào sử dụng Makefile cho các dự án Python
- Chạy các tác vụ lặp đi lặp lại như kiểm thử, định dạng và kiểm tra mã.
- Tự động hóa thiết lập dự án cho các nhà phát triển mới.
- Giản lược quy trình phát triển mà không cần dựa vào các công cụ phức tạp.
Kết luận
Makefile là một công cụ nhẹ nhưng MẠNH MẼ để tự động hóa các tác vụ trong các dự án Python. Bằng cách nắm vững những kiến thức cơ bản, bạn có thể giản lược quy trình làm việc, tiết kiệm thời gian và mang lại tính nhất quán cho quy trình phát triển của mình.
Trong bài đăng tiếp theo, chúng ta sẽ tìm hiểu sâu hơn về các kỹ thuật Makefile nâng cao, khám phá các biến, mục tiêu ảo và các thực tiễn tốt nhất để đạt hiệu quả.