2 điểm bởi GN⁺ 2025-01-29 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tạo rất nhiều script tự động hóa trong thư mục ~/bin/.
  • Sau khi phát hiện uv và metadata script nội tuyến, tác giả bắt đầu dùng Python nhiều hơn.
  • ~/bin nằm trong path, tác giả muốn chạy trực tiếp các script từ dòng lệnh.
  • Để làm vậy, tác giả dùng shebang sau: #!/usr/bin/env -S uv run --script
  • Dòng lệnh giờ sẽ chạy uv run --script và truyền tệp làm đối số.
  • uv sẽ bỏ qua shebang và chạy phần còn lại của tệp như một tệp Python thông thường.
  • Sau khi cấp quyền thực thi cho script bằng lệnh chmod a+x {filename}, có thể dùng các script dòng lệnh đơn giản viết bằng Python. Các script này sẽ tự động xử lý dependency.

1 bình luận

 
GN⁺ 2025-01-29
Ý kiến Hacker News
  • Có thể dùng tùy chọn env -S để truyền nhiều đối số trong dòng shebang

    • Điều này phá vỡ nhận thức phổ biến rằng trên Linux, dòng shebang chỉ có thể truyền một đối số duy nhất
    • env -S hữu ích khi cần tách riêng từng đối số để thực thi
  • Cải thiện cách cài đặt công cụ CLI Python bằng uv

    • Có thể cài đặt đơn giản bằng script curl | sh
    • Tạo một gói cài đặt nhỏ trên PyPI có uv là phụ thuộc để cài công cụ CLI
    • Có thể cài vào môi trường độc lập mà không cần quản lý môi trường ảo Python
    • Giảm số lượng issue trên GitHub do các vấn đề phụ thuộc phức tạp
  • Nghĩ ra cách chạy tệp Prolog từ shell

    • Làm cho tệp Prolog cũng được nhận diện như tệp shell để có thể thực thi
    • Trong shell, xử lý dòng đầu tiên như chú thích để tránh lỗi
  • Bài viết "Lazy self-installing Python scripts with uv" của Trey Hunner cung cấp thêm nhiều ví dụ và chi tiết

  • Có thể dùng mise để viết script cho các tác vụ nhỏ

    • Giới thiệu cách dùng uv để chạy script Python
  • Việc quản lý môi trường Python bằng uv run python khá tiện lợi

    • Có thể chạy REPL trong môi trường dự án mà không cần quản lý .venv
    • Giải quyết các vấn đề cài đặt hệ thống và cho phép chạy trực tiếp trong dự án/môi trường
  • Có một vài điểm cần lưu ý khi dùng uv làm trình chạy lệnh, nhưng trong đa số trường hợp nó giúp tiết kiệm thời gian

    • Có các tùy chọn để giải quyết vấn đề đường dẫn khi chạy trực tiếp tệp .py
  • Người dùng TypeScript có thể dùng Deno để làm việc tương tự

    • Có thể thêm cờ quyền bằng deno run
  • Có thể dùng trình quản lý gói Nix để quản lý nhiều ngôn ngữ và phụ thuộc khác nhau

    • Có thể viết các script di động chỉ trong một tệp duy nhất