bazel-contrib / bazel-contrib/rules_python

allow py_zipapp to not include the python runtime

Đang mở
#3,805 5 bình luận 0 reaction 0 người được giao Xem trên GitHub
core-rules type: feature request
Ngôn ngữ chính
Starlark
Star
688
Fork
721
Merge trung bình
15 giờ 7 phút
Pull request đã merge (30 ngày)
76

Mô tả

The gist of the feature request is to allow using py_zipapp to create a zipapp that doesn't include the python runtime. The reason is because the runtime is large, and if you're using e.g. docker to provide the runtime separately, then the bundled runtime is unwanted overhead.

Not including the runtime files is trivial: just don't include those depsets of files when creating the zip.

However, the resulting zip isn't functional. This is because, under the hood, a venv layout is used, which expects `bin/python` to point to the runtime. But if the runtime is being provided externally, it doesn't have a play to point to.

There's 3 options I can think of:

(1) Use runtime_env_toolchain. It has some hacks/tricks to use a shell script as bin/python, but still act as a venv interpreter. Its fragile though, relying on undocumented python behavior.

(2) Lookup python at runtime and recreate venv at runtime. The logic for this already exists in one of the bootstraps (not sure if its in the zip one, though).

(3a) Write a relative symlink that "escapes" the zip file tree. Then its up to the user to ensure that path exists and points to a usable python.

(3b) Write an absolute symlink, i.e. make use of the "platform interpreter" feature. Then it's up to the user to ensure that path exists and points to a usable python.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu từ phần triển khai py_zipapp và kiểm tra bố cục venv cùng các depset của tệp runtime. So sánh logic bootstrap hiện có với hành vi của runtime_env_toolchain, sau đó xác định tùy chọn runtime bên ngoài nào được hỗ trợ và xác minh rằng zipapp tạo ra chạy được mà không có các tệp runtime đi kèm.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
build-system
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.