Custom environments in subinterpreters
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 77.2k
- フォーク
- 35.9k
- PR マージ指標
- PR 指標を取得中
説明
Feature or enhancement
Proposal:
I wanted to explore the viability of having custom environments in subinterpreters. There are several use-cases that could be enabled by this feature.
So far, from informal discussion with others about this, there are a couple possible issues to take into consideration.
Issues
- Some of the immortal objects shared between subinterpreter may be environment-dependent (pointed out by @Yhg1s)
- Complications around dynamic loading, by having extension modules from different environments
2.1) Symbol conflicts from their dependencies (pointed out by @Yhg1s)
2.2) Since subinterpreters share the same process, when loading the same shared object, they get the same pointer (pointed out by @pablogsal)
Implementation
The main thing we need is a way to disable the site initialization, which could be a enable_site option in the interpreter config. This should disable the environment customizations, and result in a bare environment without anything extra sys.path.
However, to make the use of different environments more ergonomic, we could add an environment_path location pointing to a directory containing a pyvenv.cfg, which would perform the site initialization for that environment.
Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
No response
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
この issue ではファイルもテストも指定されていないため、まず subinterpreter のインタープリター設定と site の初期化を確認してください。提案されている enable_site と environment_path のオプションについて、列挙されている immortal-object と dynamic-loading に関する懸念を踏まえて評価してください。これらの懸念を解消し、実装範囲を定義する合意済みの設計ができた時点で完了とします。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- backend
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100