ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
配布形態の比較
| 形態 | 受け取り側に必要なもの | サイズ | 主な用途 |
|---|---|---|---|
| PyInstaller 単一 EXE | OS のみ(Python 不要) | 大(15-50MB+) | ★ エンドユーザ配布 |
| cx_Freeze / py2exe | OS のみ | 大 | EXE 化(PyInstaller の代替) |
| Nuitka | OS のみ(C コンパイル済) | 大 | ★ 高速化込み EXE |
| Briefcase | OS のみ(GUI モバイル対応) | 大 | iOS / Android 含むクロス配布 |
| requirements.txt + ソース | Python + pip | 小 | 開発者・社内向け |
| venv 同梱配布 | 同 OS / 同 Python バージョン | 中 | クローズドな社内ツール |
| Wheel (.whl) | Python + pip | 小 | ライブラリ配布 |
| PyPI 公開 | Python + pip + ネット | 小 | OSS / 広く配布 |
| Docker イメージ | Docker | 中 | ★ サーバ・CI |
PyInstaller で単一 EXE を作る
もっともポピュラー。Python ランタイム + 依存ライブラリ + アプリを 1 個の実行ファイルにまとめます。
# インストール
pip install pyinstaller
# 単一ファイル化(最もシンプル)
pyinstaller --onefile main.py
# 出力先: dist/main.exe (Windows) / dist/main (Mac/Linux)
# よく使うオプション
pyinstaller \
--onefile \
--windowed \ # コンソール非表示 (GUI 用)
--icon=app.ico \ # アイコン埋め込み
--name="MyApp" \ # 出力名
--add-data="assets;assets" \ # データファイル同梱 (区切り: Win ; Mac :)
--hidden-import=missing_mod \ # 動的 import 用
main.py
大量のオプションがある場合は spec ファイル(自動生成)を編集して pyinstaller MyApp.spec で再ビルドします。
requirements.txt と仮想環境
ソースコード + 依存リスト方式。最も身軽:
# 開発側: 依存を書き出す
pip freeze > requirements.txt
# 受け取り側
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txt
python main.py
パッケージを事前にインストールして同梱する
「インストール作業をユーザに依頼できない」ケースでは依存パッケージごと配布します:
# ./libs に全依存を展開
pip install -r requirements.txt -t ./libs
# ディレクトリ構成
# myapp/
# ├── main.py
# ├── libs/ ← 同梱した依存
# │ ├── requests/
# │ ├── numpy/
# │ └── ...
# └── requirements.txt# main.py の冒頭で sys.path にライブラリを追加
import sys
import os
HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, os.path.join(HERE, 'libs'))
# 以降 import で同梱版が使われる
import requests
import numpy as np
注意: ターゲット OS / Python バージョンと同じ環境で pip install する必要があります。Windows で展開した numpy は Mac では動きません。クロスプラットフォーム配布は EXE 化 / Docker / wheel の方が安全。
venv ごと配布
# 開発側
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
# venv ごと ZIP
# ※ venv 内の絶対パスを書き換える必要があるため、relocate ツール利用 or
# pyvenv.cfg を相対パスに書き換え推奨
# 受け取り側
unzip myapp.zip
cd myapp
venv\Scripts\python main.py
パスの問題があるため近年は推奨されません。同じ目的なら PyInstaller か Docker が安全です。
Wheel (.whl) ビルドと PyPI 公開
# プロジェクト構成
# myapp/
# ├── pyproject.toml
# ├── README.md
# └── src/myapp/
# ├── __init__.py
# └── main.py# pyproject.toml
[build-system]
requires = ["setuptools >= 64", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "myapp"
version = "0.1.0"
description = "My Awesome Tool"
readme = "README.md"
requires-python = ">=3.9"
dependencies = [
"requests >= 2.28",
"numpy >= 1.23",
]
[project.scripts]
myapp = "myapp.main:cli" # コマンドラインエントリポイント# ビルド
pip install build twine
python -m build
# → dist/myapp-0.1.0.tar.gz と dist/myapp-0.1.0-py3-none-any.whl
# PyPI に公開
twine upload dist/*
# → 以降は誰でも `pip install myapp` 可能
# テスト用は TestPyPI: twine upload -r testpypi dist/*
# ローカルで wheel 配布
pip install ./dist/myapp-0.1.0-py3-none-any.whl
Nuitka(C コンパイル)
Python コードを C にトランスパイル → ネイティブ実行ファイルに。PyInstaller より起動が早く、難読化効果もあり:
pip install nuitka
# 単一実行ファイル化
python -m nuitka --onefile --standalone main.py
# GUI アプリ
python -m nuitka --onefile --standalone --windows-disable-console \
--enable-plugin=pyside6 main.py
Docker イメージ配布(サーバ系の決定版)
# Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]# ビルド
docker build -t myapp:1.0 .
# 配布(イメージレジストリ経由)
docker tag myapp:1.0 ghcr.io/your/myapp:1.0
docker push ghcr.io/your/myapp:1.0
# 受け取り側
docker run --rm ghcr.io/your/myapp:1.0
選び方の指針
| シナリオ | 推奨 |
|---|---|
| 非エンジニアに配布、ダブルクリックで起動 | PyInstaller --onefile --windowed |
| 社内ツール、エンジニア向け | requirements.txt + venv |
| サーバ運用 / CI | Docker |
| OSS として広く配りたい | PyPI 公開(wheel) |
| クローズドだが多数端末に同じ環境 | Docker または PyInstaller |
| iOS / Android にも展開したい | Briefcase / Kivy |
| 起動高速化 / 難読化したい | Nuitka |
FAQ
Q: PyInstaller で EXE がウイルス判定される
A: 自前署名 (Code Signing 証明書) でデジタル署名するのが正攻法。または UPX 圧縮を外す(--noupx)。誤検知が多い場合は Microsoft Defender の誤検知レポート提出を。
Q: NumPy / Pandas を含めると EXE が 200MB 以上に
A: PyInstaller は依存全部入りになるためサイズが膨らみます。--exclude-module で不要モジュール除外、または Nuitka / Docker を検討。
Q: 受け取り側で「DLL load failed」が出る
A: ターゲット OS で Visual C++ 再頒布可能パッケージが不足しているケース多。インストーラ同梱を案内します。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 環境構築
- 文法
- フレームワーク
- ライブラリ
- バージョンの確認
- エラー一覧
- Webスクレイピング
- Excelの読み込み/書き込み操作(openpyxl編)
- Excelのセルの値を読み込む方法(xlrd編)
- ローカルで独立して動くPythonプログラムとパッケージの事前インストール方法
- プログラム実行時のパスを取得
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?