2 คะแนน โดย GN⁺ 2025-01-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • สร้างสคริปต์อัตโนมัติไว้ในไดเรกทอรี ~/bin/ จำนวนมาก
  • หลังจากค้นพบ uv และเมตาดาต้าสคริปต์แบบอินไลน์ ก็หันมาใช้ Python มากขึ้น
  • เนื่องจาก ~/bin อยู่ใน path จึงต้องการรันสคริปต์ได้โดยตรงจากบรรทัดคำสั่ง
  • เพื่อทำเช่นนั้น จึงใช้ shebang ต่อไปนี้: #!/usr/bin/env -S uv run --script
  • ตอนนี้บรรทัดคำสั่งจะรัน uv run --script และส่งไฟล์เป็นอาร์กิวเมนต์
  • uv จะเพิกเฉยต่อ shebang และรันส่วนที่เหลือของไฟล์เป็นไฟล์ Python ปกติ
  • หลังจากให้สิทธิ์รันกับสคริปต์ด้วยคำสั่ง chmod a+x {filename} ก็สามารถใช้สคริปต์บรรทัดคำสั่งแบบง่ายที่เขียนด้วย Python ได้ ซึ่งจะจัดการ dependencies ให้อัตโนมัติ

1 ความคิดเห็น

 
GN⁺ 2025-01-29
ความคิดเห็นบน Hacker News
  • ใช้ตัวเลือก env -S เพื่อส่งอาร์กิวเมนต์หลายตัวในบรรทัด shebang ได้

    • ช่วยลบล้างความเข้าใจทั่วไปที่ว่าใน Linux บรรทัด shebang ส่งได้เพียงอาร์กิวเมนต์เดียว
    • env -S มีประโยชน์สำหรับแยกอาร์กิวเมนต์ออกเป็นแต่ละตัวก่อนรัน
  • ปรับปรุงวิธีติดตั้งเครื่องมือ Python CLI ด้วย uv

    • ทำให้ติดตั้งได้ง่ายด้วยสคริปต์ curl | sh
    • สร้างแพ็กเกจติดตั้งขนาดเล็กบน PyPI ที่พึ่งพา uv เพื่อติดตั้งเครื่องมือ CLI
    • ทำให้ติดตั้งในสภาพแวดล้อมแยกอิสระได้โดยไม่ต้องจัดการ Python virtual environment
    • ช่วยลด GitHub issues ที่เกิดจากปัญหา dependency ซับซ้อน
  • คิดวิธีทำให้ไฟล์ Prolog รันจากเชลล์ได้

    • ทำให้ไฟล์ Prolog ถูกมองเป็นไฟล์เชลล์ได้ด้วย จึงสามารถรันได้
    • ทำให้เชลล์มองบรรทัดแรกเป็นคอมเมนต์เพื่อป้องกันข้อผิดพลาด
  • บทความของ Trey Hunner เรื่อง "Lazy self-installing Python scripts with uv" มีตัวอย่างและรายละเอียดเพิ่มเติม

  • สามารถใช้ mise เขียนสคริปต์สำหรับงานเล็ก ๆ ได้

    • แนะนำวิธีใช้ uv เพื่อรันสคริปต์ Python
  • การใช้ uv run python เพื่อจัดการสภาพแวดล้อม Python สะดวกมาก

    • สามารถเปิด REPL ในสภาพแวดล้อมของโปรเจ็กต์ได้โดยไม่ต้องดูแล .venv
    • ช่วยแก้ปัญหาการติดตั้งระดับระบบ และรันได้โดยตรงภายในโปรเจ็กต์/สภาพแวดล้อม
  • มีข้อควรระวังบางอย่างเมื่อใช้ uv เป็นตัวรันคำสั่ง แต่โดยมากช่วยประหยัดเวลาได้

    • มีตัวเลือกสำหรับแก้ปัญหา path เมื่อต้องรันไฟล์ .py โดยตรง
  • ผู้ใช้ TypeScript สามารถใช้ Deno ทำงานลักษณะคล้ายกันได้

    • ใช้ deno run เพื่อเพิ่ม permission flags ได้
  • สามารถใช้ตัวจัดการแพ็กเกจ Nix เพื่อจัดการหลายภาษาและ dependencies ได้

    • เขียนสคริปต์แบบพกพาที่อยู่ในไฟล์เดียวได้