🖥️

Streamlit appをデスクトップアプリ化する

2025/01/13に公開

PyCharmを使った例です。

  1. 新規プロジェクトを作成
    • venvでPython 3.11を指定(Pyodideが最新に対応していないかもしれないので)
  2. プロジェクトルートにディレクトリを作成
    • 名前は何でもいいけどプロジェクトファイルと同じ名前が普通
    • mkdir {your_dir}
  3. 作ったディレクトリにstreamlit_app.pyを作成
    • 名前はこれじゃないといけない
    • touch {your_dir}/streamlit_app.py
{your_dir}/streamlit_app.py(例)
import streamlit as st

def main():
    st.title('Streamlit Desktop App')

if __name__ == '__main__':
    main()
  1. requirements.txtをプロジェクトルートに準備
    • touch requirements.txt
    • pip install -r requirements.txt
  2. package.jsonをプロジェクトルートに準備
package.json
{
  "name": "xxx",
  "version": "0.1.0",
  "main": "./build/electron/main.js",
  "scripts": {
    "dump": "dump-stlite-desktop-artifacts",
    "serve": "cross-env NODE_ENV=production electron .",
    "pack": "electron-builder --dir",
    "dist": "electron-builder",
    "postinstall": "electron-builder install-app-deps"
  },
  "build": {
    "files": ["build/**/*"],
    "directories": {
      "buildResources": "assets"
    }
  },
  "devDependencies": {
    "@stlite/desktop": "0.38.1",
    "cross-env": "^7.0.3",
    "electron": "^25.2.0",
    "electron-builder": "^24.4.0"
  }
}
  1. npm run dump {your_dir}
  2. npm run serve
    • 動作を確認
  3. npm run dist
    • macOS: npm run dist -- --mac
    • Windows: npm run dist -- --win
    • Linux: npm run dist -- --linux deb rpm

参考

https://www.npmjs.com/package/@stlite/desktop

https://github.com/whitphx/stlite/blob/main/packages/desktop/README.md

https://gihyo.jp/article/2024/04/monthly-python-2404

https://zenn.dev/zreactor/articles/abfc83c78deea3

Discussion