เห็นใน feed ของ reddit มีการแนะนำ Rye
ซึ่งเป็น python package manager ที่เขียนด้วยภาษา Rust
โดยมีแรงบันดาลใจจาก Cargo นั่นเอง
เป้าหมายของ Rye คือ
- Speed
- Security
- Simplicity
เมื่อไปอ่านหัวข้อ Philosophy and Vision พบว่าน่าสนใจดังนี้
ทำการสร้างมาเพื่อแก้ไขปัญหาที่พบเจอ เช่น
- ปัญหาจากการใช้งาน virtualenvs ไม่มีทั้ง dependency ต่าง ๆ ที่ต้องใช้งาน
- ไม่มีตัวจัดการ version ของ python ยิ่งต่าง OS ยิ่งลำบาก
- ไม่มีการจัดการ local dependency ให้
- ไม่มี workspace ให้ใช้
- ไม่มี basic script section สำหรับการ run คำสั่งต่าง ๆ ของ project
ดังนั้นจึงสร้าง Rye ขึ้นมา เพื่อแก้ไขัญหาเหล่านี้
ก่อนใช้งานนั้นใน Python มีเครื่องมือในการจัดการ dependency ต่าง ๆ ดังนี้
- pip
- poetry
- condo
- venv
- virtualenv
มาลองใช้งาน Rye กันดู
เริ่มที่ติดตั้งก่อน ใช้งานบน MacOS
[gist id="a89f8f1035bd7ae08ab25d9abfce746f" file="1.txt"]ตรวจสอบการติดตั้ง ซึ่งมีการ download Python มาให้เลย
[gist id="a89f8f1035bd7ae08ab25d9abfce746f" file="2.txt"]ทำการสร้าง project ด้วย Rye
[gist id="a89f8f1035bd7ae08ab25d9abfce746f" file="3.txt"]จะมีไฟล์ pyproject.toml สำหรับอธิบาย project ว่ามีชื่ออะไร
ใช้ dependency อะไรบ้าง
ใช้ toolchain อะไร
มี script อะไรบ้าง เป็นต้น
จากนั้นทำการ sync project นั่นคือ
ให้ Rye ทำการ initial project ขึ้นมา ทำงานดังนี้
- สร้าง virtualenv ให้
- ทำการ download dependency ให้
ทำการเพิ่ม dependency และเขียน code กันเลย
ลองใช้งาน Flask นิดหน่อย
[gist id="a89f8f1035bd7ae08ab25d9abfce746f" file="5.txt"]Code ไฟล์ app.py สำหรับสร้าง web server
[gist id="a89f8f1035bd7ae08ab25d9abfce746f" file="app.py"]จากนั้นก็ run แบบง่าย ๆ ด้วย Rye
[gist id="a89f8f1035bd7ae08ab25d9abfce746f" file="6.txt"]ยังไม่พอ ยังมี tool chain อื่น ๆ ให้ใช้งาน
- rye lint
- rye format
- rype build
ลองใช้งานกันดูครับ น่าสนใจมาก ๆ
Reference Websites