python / python/cpython

Support relative home in pyvenv.cfg (host-relocatable venv)

Đang mở
#136,051 3 bình luận 6 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

stdlib topic-venv type-feature
Ngôn ngữ chính
Python
Star
77.2k
Fork
35.9k
Chỉ số merge pull request
Chỉ số pull request đang chờ

Mô tả

Feature or enhancement

Proposal:

The central idea is to allow a venv to be relocatable between different hosts by using a relative path in pyvenv.cfg for the home value. Relative paths allow avoiding use of an absolute path that is likely host-specific. Concretely, I propose making a relative home value relative to the pyvenv.cfg file.

Today, the home key is officially documented to be an absolute path. If a relative path is used, then official behavior is undefined. In practice, it is treated as relative to the current working directory (so, in effect, could be anywhere). (By omitting the home key entirely (https://github.com/python/cpython/issues/135773), it gets computed based on the bin/python3 symlink, but this is undesirable behavior).

I think there's a variety of things this enables or otherwise makes much simpler. The main one that comes to mind is that multiple venvs can efficiently share a runtime (while still being host-relocatable). Not needing a system Python itself to create the venv is another benefit. The explicitly looser coupling between the venv and system state (i.e where the desired Python is) is also appealing.

For the runtime itself, making relative home paths work is simple and about 2 lines. See https://github.com/python/cpython/compare/main...rickeylev:cpython:feat.relative.pyvenv.home

As the python-ideas discussion points out, other parts of venv creation and dependency installation would also need to be aware of this.

I expect a PEP will be requested, so I'll start on that and put more details there rather than here.

Parties that should probably be part of the discussion:

  • rules_python: @rickeylev @aignas @groodt
  • rules_py: @alexeagle @arrdem
  • uv owners
  • python venv module owners
  • pip owners
Related
Has this already been discussed elsewhere?

I have already discussed this feature proposal on Discourse

Links to previous discussion of this feature:

https://discuss.python.org/t/making-venvs-relocatable-friendly/96177

https://discuss.python.org/t/q-what-stops-a-venv-from-being-relocatable/57166

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

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

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu với bản dự thảo PEP được liên kết về pyvenv.cfg tương đối và hành vi của mô-đun venv được mô tả trong issue này, sau đó xem xét các cuộc thảo luận Discourse được liên kết. Xác định đầy đủ phạm vi của các đường dẫn home tương đối, bao gồm việc tạo venv và cài đặt dependency. Chỉ được xem là hoàn tất khi có thiết kế đã được thống nhất và kế hoạch triển khai giải quyết việc di chuyển host vượt ra ngoài thay đổi chỉ dành cho runtime.

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
tooling
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
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
25/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.