Monday, 19 December 2022

Tự động tạo requirements.txt với pipreqs

Bạn có 1 project python to vãi hàng, project của bạn có quá nhiều mini task và bạn import một đống package vào để xử lý các mini task đó. Giờ bạn đã code xong, muốn gửi cho sếp xem / cho thầy chấm mà chợt giật mình: lỡ sếp / thầy không cài các package đó là code mình hỏng?

Thế là bạn ngồi cặm cụi vào từng file, check xem package đó là built-in module của Python hay là external module, rồi ngồi viết requirements.txt từng dòng một

pandas==6.9.0
torch==6.9.0

Khủng hơn, bạn soạn một file doc, ghi vào đó

Em kính gửi thầy / sếp

Sếp vui lòng cài các package sau để code chạy được

1. Pandas (phiên bản 6.9.0 trở về sau)

2. Torch (phiên bản 6.9.0 trở về sau)

...



Nói nghe nè? Người hiện đại không ai dại mà phí thời gian làm mấy cái này cả. Giới thiệu package pipreqs - tự động tạo requirements.txt giùm mà mình không phải tốn thời gian vô ích ngồi mở từng file code ra xem.

Cách xài

Hướng dẫn chung cho bất kì ai lên PyPI lần đầu:

1. Đọc installation

2. Đọc example và thực hành.

Cụ thể ở đây: đầu tiên xài pip (hay conda, hay bất kì cái package manager nào bạn thích) để cài pipreqs.

pip install pipreqs

Sau đó xem ví dụ:

$ pipreqs /home/project/location
Successfully saved requirements file in /home/project/location/requirements.txt

Rõ ràng là người ta hướng dẫn tận răng! Nghĩa là, gọi pipreqs check các file trong đường dẫn /home/project/location. File requirements.txt sẽ được tạo ở đường dẫn đó luôn, quá đã!

Phụ lục

Cách xài requirements.txt

pip install -r requirements.txt

pip sẽ tự động cài các package trong requirements.txt cho bạn? Thế kỉ 21 cách mạng công nghiệp 4.0, không ai rảnh ngồi pip install từng package nữa đâu!

Lỗi encoding?

pipreqs /home/project/location --encoding <charset>

Xài --encoding utf8

Đã có file requirements.txt?

pipreqs /home/project/location --force

Mình xài jupyter notebook

Thế thì xài pipreqsnb!

Ủa, còn pip freeze?

Hỏi hay! pip freeze nó list tất cả các package bạn đang xài, kể cả bạn có import nó vào project hay không. Thế nên trừ khi bạn muốn backup các package đang cài để mang sang máy mới, không thì đừng xài.

Lời cuối

Nghe văn vở kiểu tutorial, nhưng đây là chuyện cười ra nước mắt mà mình gặp trong quá trình đi code. Nói chung là không tiện nêu chi tiết, nhưng mà đâu đó ngoài kia có tồn tại một cái file doc / pdf của một project, trong đó list ra hết tất cả các package cho người dùng tự cài thay vì bảo chạy requirements.txt.

For fun, but serious. Mùa đông 2022.

No comments:

Post a Comment

Popular posts