Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

น่าสนใจดีกับ Rye :: Python package manager

$
0
0

เห็นใน 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 ให้
[gist id="a89f8f1035bd7ae08ab25d9abfce746f" file="4.txt"]

ทำการเพิ่ม 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


Viewing all articles
Browse latest Browse all 1997

Trending Articles