2026年7月28日(火)掲載 3,043本日 29
HN10320

どこでも動く!依存関係ゼロのポータブルなPython環境の作り方

Self-contained highly-portable Python distributions

jcbhmr約7時間前

議論

10
1rsyring約6時間前

これらのディストリビューションを使っているユーザーなら、姉妹プロジェクトであるPyOxy [1] の方が役立つかもしれない。PyOxyはこうしたPythonディストリビューションを取り込み、Pythonインタプリタの機能を強化するRustコードを追加するものだ。公式のPyOxyリリースバイナリは単一ファイルの実行形式になっていて、フル機能のPythonインタプリタとして使える。

1: https://github.com/indygreg/PyOxidizer/

READMEを見ると、PyOxyにはいくつか関連する用途があるみたいだ。

  • インタプリタを含めたPythonアプリ全体を単一の実行ファイルにできる

  • 自己完結型のPythonインタプリタなどを配布して、より大きなアプリケーション内に埋め込んだりライブラリとして使ったりできる

  • PyOxidizerはRustとPythonの架け橋としても機能する。「PyOxidizerを使えばRustプロジェクトにPythonインタプリタを簡単に組み込める。逆もまた然りで、PythonにRustを追加することも可能だ」

2simonw約6時間前

これらのディストリビューションは素晴らしいよ。Astralが少し前にメンテナンスを引き継いだので、技術的には今はOpenAIの傘下にあることになる。

https://github.com/astral-sh/python-build-standalone

もしPythonを他のアプリケーション(例えばmacOSのデスクトップアプリなど)にバンドルしたいなら、まさにこれが必要になるはず。

3charliermarsh約6時間前

これらはuv (https://github.com/astral-sh/uv) で使っているPythonディストリビューションだ。つまり、uvでPythonをインストールすると、python-build-standaloneからインストールされることになる。(pipx、Hatch、Poetry、Bazelなど、Pythonをインストールできる他のツールの多くも同じことだ。)

ここ1年半ほど、プロジェクトへのエンジニアリング工源のほとんどは、以下の3つに注力してきた。

  1. 上流のCPythonに追従すること。(この作業の多くをCPython自体に取り込んでもらえるよう働きかけている。)

  2. CPythonに関連する既知の「クセ」をすべて修正すること。

  3. これらのディストリビューションを他のどのCPythonディストリビューションよりも高速(あるいは同等)にすること。

もし興味があれば、メンテナンスを引き継いだ時の理由や経緯について書いたので、ここを見てみてほしい: https://x.com/charliermarsh/status/1864050698574311561

4zie約6時間前

APE/Cosmopolitanのクロスプラットフォームバイナリもあるよね。これにはpythonが含まれている。そう、クロスプラットフォームバイナリなんだ。このバイナリは「Linux + Mac + Windows + FreeBSD + OpenBSD 7.3 + NetBSD + BIOSでネイティブに動作し、考えうる最高のパフォーマンスと最小のフットプリントを実現する」ものだ。

どうやら.pyファイルをPythonバイナリと一緒にzipにまとめれば実行できるみたいだけど、まだ試してみる機会がないんだ。

5orliesaurus約5時間前

重要な違いは、自己完結型だからといって「どこでも動く単一のバイナリ」になるわけではない……ということだよね?

virtualenvは依然としてホストのインタプリタとOSに依存している。
これらのディストリビューションはインタプリタや標準ライブラリ、ほとんどのランタイム依存関係を固定するけれど、残りの境界線で本番環境での驚き(トラブル)が起きるんだ。

  • glibcのバージョン、CPUの機能レベル、サードパーティのネイティブ拡張などがそれにあたる。

例えばmuslビルドはlibcへの依存を排除するけど、一般的な.so拡張をロードできなくなる。

uvがこれをメンテナンスすることが重要だというのはよくわかる。再現性のあるPythonベースを提供しつつ、プラットフォーム固有の拡張レイヤーをデプロイ時の決定事項として明確に分離できるからだ。

61928416約5時間前

この急なAstralの売り込みは何なの?

Astralのパッケージキャッシュプロキシか何かが、OpenAIやHuggingfaceのインシデントの原因だったりしたのか?

7djfobbz約5時間前

Sublime Textが使っているのもこれじゃない?

8tonymet約4時間前

700MBよりは小さいの?

90cf8612b2e1e約4時間前

デスクトップ環境で動かすためにPythonとライブラリをWASMにコンパイルすることを検討しているんだ。元々がPythonだし、パフォーマンスが大幅に落ちても構わない。ただ、PyInstallerよりもう少し扱いやすい形でコードをパッケージ化したいだけなんだ。