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