GitHub Actionsを使用してオフライン・スタンドアロンで動作するPythonパッケージを自動構築・配布するプロジェクトです。
このプロジェクトは以下の目的で作成されています:
- オフライン環境でのPython利用を可能にする
- スタンドアロンで動作する実行可能なPythonパッケージを配布
- GitHub Actionsによる自動化されたビルドプロセス
- カスタマイズ可能なパッケージ依存関係の管理
このプロジェクトでは、以下が含まれたPythonパッケージを配布します:
- Python 3.13.7 (Embeddable版)
- pip パッケージマネージャー
- pandas (デフォルト依存パッケージ)
配布されるパッケージはPython_Embeddable.zipとしてReleasesからダウンロードできます。
# 最新リリースから Python_Embeddable.zip をダウンロード
curl -L -o Python_Embeddable.zip https://github.com/toyfer/embeddable_python_init/releases/latest/download/Python_Embeddable.zip# Windows環境での例
unzip Python_Embeddable.zip -d Python/
cd Python/
python.exe -c "import pandas; print('Pandas version:', pandas.__version__)".github/workflows/init-python.ymlの以下の部分を編集してください:
- name: Python Embeddable Setup Dependencies
run: |
.\Python\Python.exe -m pip install pandas
# 追加したいパッケージをここに記載
# .\Python\Python.exe -m pip install numpy matplotlib requests- name: Python Embeddable Download
run: Invoke-WebRequest -Uri https://www.python.org/ftp/python/3.13.7/python-3.13.7-embed-amd64.zip -Outfile Python.zip
# ↑ URLを変更してバージョンを調整このプロジェクトのGitHub Actionsワークフロー(.github/workflows/init-python.yml)は以下の流れで動作します:
graph TD
A[Push イベント] --> B[Windows環境でジョブ開始]
B --> C[リポジトリをチェックアウト]
C --> D[Python Embeddableをダウンロード]
D --> E[Pythonのセットアップ]
E --> F[依存パッケージのインストール]
F --> G[Pythonパッケージの圧縮]
G --> H[GitHubリリースの更新]
- name: Check out code
uses: actions/checkout@v5役割: リポジトリのソースコードをワークフロー実行環境にチェックアウトします。
actions/checkout@v5: GitHub公式のアクションでリポジトリのコンテンツを取得
- name: Python Embeddable Download
run: Invoke-WebRequest -Uri https://www.python.org/ftp/python/3.13.7/python-3.13.7-embed-amd64.zip -Outfile Python.zip役割: Python.orgからPython 3.13.7のEmbeddable版をダウンロードします。
- Embeddable版は軽量でスタンドアロン実行に適した形式
- name: Python Embeddable Setup
run: |
Expand-Archive .\Python.zip -DestinationPath .\Python\
(Get-Content .\Python\Python313._pth) -replace '#import site', 'import site' | Set-Content .\Python\Python313._pth
Invoke-WebRequest -Uri https://bootstrap.pypa.io/get-pip.py -Outfile .\Python\get-pip.py
.\Python\Python.exe .\Python\get-pip.py
.\Python\Python.exe -m pip install -U pip役割: ダウンロードしたPythonの初期セットアップを実行します。
- ZIPファイルの展開
siteモジュールの有効化(サードパーティパッケージのインストールに必要)- pipのインストール
- pipのアップグレード
- name: Python Embeddable Setup Dependencies
run: |
.\Python\Python.exe -m pip install pandas役割: 指定した依存パッケージをインストールします。
- ここでパッケージを追加・変更することで、配布パッケージの内容をカスタマイズ可能
- name: Compress Python
run: Compress-Archive -Path .\Python\* -DestinationPath .\Python_Embeddable.zip役割: セットアップ完了したPythonを配布用にZIP圧縮します。
- name: Update Release (always update latest release)
uses: softprops/action-gh-release@v2
with:
tag_name: latest
name: Python Embeddable with UV
# ... その他の設定役割: GitHubリリースを作成・更新し、配布パッケージを公開します。
softprops/action-gh-release@v2: GitHub Releasesを作成・更新するためのサードパーティアクションtag_name: latestで常に最新版として更新make_latest: trueで最新リリースとしてマーク
ワークフローには以下の権限が設定されています:
permissions:
contents: write # Release作成に必要このプロジェクトはMITライセンスのもとで公開されています。詳細はLICENSEファイルをご確認ください。
プルリクエストやIssueでのフィードバックを歓迎します。