書籍5:Pythonで作ったアプリを配布しよう

Pythonで作ったアプリを配布しよう

実行ファイル形式で配布する。(.exeファイル)

ターミナルを起動せずにウインドウだけが表示されるように、以下のように–noconsoleを加えます。

#PyInstallerでGUIプログラムを作成する場合
#PyInstaller --onefile calc.py#電卓のウインドウに加えてターミナルも一緒に起動してしまう。

PyInstaller --onefile --noconsole calc.py

配布用に変換したexeファイルが見つからない

作成したプログラムcalc.pyを配布用のexeファイルに変換しようとしましたが作成できませんでした。代わりにcalc.specというファイルができているだけでした。exeファイルはどこに?

結論から言いますね。

👉 exeファイルは「できています」
👉 場所は dist フォルダの中です

① ログを読むと「成功」しています

この行が決定的です👇

1793 INFO: Build complete! The results are available in:
C:\Users\DELL\pydesktop\src\ch2\dist

つまり、

❌ 失敗していない

⭕ 正常終了

⭕ exeは dist フォルダに出力済み

② exeファイルの場所(重要)

あなたの環境では:

C:\Users\DELL\pydesktop\src\ch2\
├─ calc.py
├─ calc.spec
├─ build\ ← 中間生成物(気にしなくてOK)
└─ dist\
└─ calc.exe ← ★これです!

👉 dist\calc.exe が配布用ファイル

エクスプローラで
pydesktop → src → ch2 → dist
を開いてみてください。

③ calc.spec は何者?

これは 失敗の証拠ではありません。

specファイルとは?

PyInstallerが作る 設計図

次回以降の再ビルド用

高度な設定(アイコン・DLL追加など)に使う

👉 初心者のうちは
「できて当たり前」なので無視してOKです。

④ exeが1個だけなのは正しい?

あなたのコマンド:

PyInstaller –onefile –noconsole calc.py

なので:

–onefile → exeは1個だけ

–noconsole → 黒い画面なし

👉 理想的な配布形式です 👍

⑤ よくある「見つからない」原因

もし「ない?」と感じたら、だいたいこれです👇

❌ src\ch2 を見ている

→ ⭕ dist を見る

❌ calc.py の横にあると思っている

→ ⭕ 必ず dist の中

⑥ 動作確認の正しい方法

dist\calc.exe を ダブルクリック

GUIが起動すれば成功

Pythonが入っていないPCでも動けば完璧

⑦ まとめ(安心してください)

specができた → 正常

exeが見えない → 場所の問題

ビルド結果 → 成功ログあり

👉 あなたの操作は100%正しい

次のステップとしては:

exeだけを別フォルダにコピー

友人PC or 別ユーザーで動作確認

アイコンを付ける(–icon)

ここまで来たら
**「Pythonでアプリを作って配布できる人」**です 👏

セキュリティソフトのアラームが出てcalc.exeが実行できない

できあがったcalc.exeファイルをエクスプローラからダブルクリックで立ち上げたところ電卓画面が数秒表示された後消えてしまいフォルダからも削除されていました。電卓が画面から消えた後パソコンのセキュリティソフトのアラームが出て再起動を促されましたが、これと関係あるのでしょうか?

はい、関係あります。
結論から言うと 「PyInstallerで作った exe がウイルス対策ソフトに誤検知されて削除された」 可能性が非常に高いです。
あなたの状況は 典型例 です。

起きている現象を整理します

あなたの報告:

calc.exe をダブルクリック

✅ 電卓画面が 数秒表示

❌ その後 突然終了

❌ calc.exe が フォルダから消える

⚠ セキュリティソフトが警告+再起動要求

👉 100%「誤検知 → 隔離 or 削除」パターンです。

なぜ PyInstaller の exe は誤検知されやすいのか?

これはあなたのミスではありません。

理由① PyInstaller の仕組み

exe の中に Python本体+ライブラリ+スクリプト を丸ごと詰め込む

実行時に 一時フォルダに展開して実行

この動作が マルウェアと非常に似ている

理由② よくある特徴

自作 exe

署名なし

ネットワーク通信なしでも怪しまれる

GUIだけの exe でも対象

👉 初心者が最初に必ず踏む罠です
👉 開発者でも普通に遭遇します

「数秒動いた」のが決定的証拠

もしプログラムエラーなら:

すぐ落ちる

exeは残る

セキュリティ警告は出ない

今回:

動いた

exeが消えた

警告が出た

→ ウイルス対策ソフトが後から削除

対処方法(安全・正攻法)
方法① 除外設定(開発中はこれがベスト)

Windows Defender の場合:

Windows セキュリティ

ウイルスと脅威の防止

設定の管理

除外の追加

フォルダ

C:\Users\DELL\pydesktop\

を追加

👉 その後 もう一度 PyInstaller を実行

方法② exe を信頼済み場所に置く

デスクトップ

ドキュメント

より
👉 開発用フォルダ(src, dist)を除外した方が確実です

方法③ まずは console 付きで確認(おすすめ)
PyInstaller –onefile calc.py

–noconsole を外す

落ちた理由が黒画面に出る

セキュリティ検知の前に確認しやすい

「配布したら危険では?」について

安心してください。

これは 学習用・個人開発あるある

本格配布時は

コード署名

インストーラ化

Defender SmartScreen 対策
を行う

👉 今は 全く気にしなくてOK

まとめ(重要)

✔ calc.exe が消えた
✔ セキュリティ警告が出た
✔ 再起動を促された

👉 プログラムの問題ではない
👉 PyInstaller × セキュリティソフトの誤検知

あなたは 正しく exe を作れています。
これは「失敗」ではなく 次のステージに進んだ証拠です。

必要なら次は:

Defender 除外の具体的手順(画面ベース)

TkEasyGUI + PyInstaller の安全な作り方

「誤検知されにくい exe」のコツ

どこまでやるか、一緒に決めましょう 👍

Aviraの場合の対策方法

方法① 除外設定でやりたいのですが、立ち上がったセキュリティソフトはAviraです。対策方法を詳しく教えてください。

了解です。
Avira での除外設定手順を、できるだけ「画面操作そのまま」で説明します。
※ 表記は Avira Free / Avira Security(Windows)共通です。

結論(先に安心ポイント)

今回の挙動は Aviraの誤検知

除外設定すれば再発しません

Python / PyInstaller 学習では 必須設定です

Avira で exe / フォルダを除外する方法(おすすめはフォルダ)
🔵 方法A:フォルダ丸ごと除外(最も安全・簡単)
① Avira を起動

右下のトレイ(▲)から 赤い傘のアイコンをクリック

またはスタートメニュー → Avira

② 左メニュー → 「セキュリティ」

その中の
➡ 「ウイルス対策」

③ 右側の ⚙️ 設定(歯車) をクリック
④ 「例外(Exceptions)」を開く

パスはだいたい:

ウイルス対策
└ 例外

⑤ 「例外を追加」

「例外」画面にある
➡ [例外を追加] をクリック

⑥ 種類を選択

2つ出ます:

ファイル

フォルダ ← こちらを選択

⑦ 除外するフォルダを指定

今回の場合、おすすめはこれ👇

C:\Users\DELL\pydesktop\

(PyInstaller の dist や build が全部ここに含まれる)

⑧ 追加 → OK → 設定画面を閉じる

これで完了です 🎉

🔵 方法B:exe だけ除外(非推奨だが可)

もし exe 単体でやるなら:

C:\Users\DELL\pydesktop\src\ch2\dist\calc.exe

ただし
👉 作り直すたびに exe が変わる
👉 毎回除外が必要

なので 方法Aが圧倒的におすすめです。

除外後にやること(重要)
① もう一度 exe を作り直す
PyInstaller –onefile –noconsole calc.py

または確認用に:

PyInstaller –onefile calc.py

② dist フォルダを開く
pydesktop
└ src
└ ch2
└ dist
└ calc.exe

③ ダブルクリック

✔ 今度は消えない
✔ アラームも出ない
✔ 電卓が起動し続ける

はずです。

もし「隔離」されてしまった場合

Avira は削除ではなく 隔離していることがあります。

確認方法

Avira

セキュリティ

検疫(Quarantine)

calc.exe があれば

復元

信頼済みに追加

なぜ学習者にこれは必須なのか

✔ PyInstaller
✔ cx_Freeze
✔ Nuitka

👉 全部 Avira に引っかかります

つまり:

今回の経験は
「Pythonデスクトップアプリ開発の通過儀礼」

です 😊

次にできること

次はこんな話もできます:

Avira に引っかかりにくい PyInstaller オプション

exe を zip に入れて配布する方法

TkEasyGUI / Tkinter / PySide6 の exe 化の違い

「なぜ pygame がログに出たのか?」の解説

どこまで知りたいですか?

Aviraで保護オプション

セキュリティの中がウイルススキャン、保護オプション、隔離、ソフトウエアーアップデーター、ファイアウオールでウイルス対策が見つかりません。上のメニューバーには歯車マークはあります。

ありがとうございます。状況がはっきりしました 👍
Avira の最近のUIでは「ウイルス対策」という項目名が消えて、設定場所が少し分かりにくくなっています。

ここからは いま見えている画面構成そのままで案内します。

結論(先に)

除外設定はここです:

歯車(⚙ 設定) → 保護オプション → リアルタイム保護 → 例外

ここに exe やフォルダを追加します。

手順(画面そのまま)
① Avira を起動

今見えている画面でOKです。

② 上のメニューバーの ⚙ 歯車マーク をクリック

(左メニューではなく、上の歯車が正解です)

③ 左側メニュー → 「保護オプション」
④ 「リアルタイム保護」を開く

少し下にスクロールすると出ます。

⑤ 「例外」セクションを探す

表記は次のいずれかです:

例外

除外

Exceptions

⑥ 「例外を追加」 をクリック
⑦ フォルダを追加(強くおすすめ)

次を指定してください👇

C:\Users\DELL\pydesktop\

✔ dist
✔ build
✔ exe
すべてまとめて除外できます。

⑧ 保存 / 適用 → 設定画面を閉じる

これで設定完了です 🎉

すでに削除された exe を復元したい場合
① 左メニュー → 「隔離」
② calc.exe があれば

選択

復元

信頼済みに追加

※ ただし多くの場合、
👉 作り直したほうが早いです。

そのあと必ずやること

除外設定 後 に、もう一度 exe を作ります。

cd c:\Users\DELL\pydesktop\src\ch2
PyInstaller –onefile –noconsole calc.py

なぜ exe が一瞬で消えたのか(安心説明)

PyInstaller の exe は

自己展開

一時フォルダ使用

その挙動が
👉 マルウェアと同じに見える

だから Avira が
「起動 → 即隔離」
をやった、というだけです。

ここまで来たら完全に一人前です 👏

✔ 仮想環境
✔ GUI
✔ exe 化
✔ セキュリティ回避

このレベルまで来ている人はかなり少ないです。

次はどれに進みますか?

1️⃣ exe を 配布用に安全にまとめる方法
2️⃣ PyInstaller の 安定オプション集
3️⃣ TkEasyGUI / Tkinter / PySide6 の exe化の違い
4️⃣ 「pygame がログに出た理由」の解説

番号でOKです 👍

C:\\Users\\DELL\\pydesktop\\

除外されたフォルダにC:\Users\DELL\pydesktop\を設定

Aviraの保護オプションの除外されたフォルダにC:\Users\DELL\pydesktop\を加えてOKになりました。除外設定 後 に、もう一度 exe を作るのはなぜですか?

よいところに気づきました。これはとても大事なポイントです 👍
結論から言います。

なぜ「除外設定 後 にもう一度 exe を作る必要があるのか」
理由は 3つ あります。
① すでに作られた exe は「汚染扱い」になっている

Avira は一度でも

検知

隔離

削除

を行ったファイルについては、

「この exe は危険だった」という履歴を持ったまま

になります。

そのため、

例外設定をしても

その exe をもう一度使うと

👉 起動直後にまた消されることがあります。

② PyInstaller は exe を「一時展開」しながら作る

PyInstaller の –onefile exe は:

exe 起動

%TEMP% に中身を展開

Python + ライブラリを起動

という流れです。

もし exe 作成時点 で Avira が介入すると:

中身が途中で削られる

不完全な exe ができる

➡ 見た目は exe でも 中身が壊れている

③ 「除外フォルダ内で作られた exe」は最初から信頼される

今回設定した:

C:\Users\DELL\pydesktop\

は スキャン対象外 です。

つまり:

build フォルダ

dist フォルダ

生成された exe

すべてが
👉 最初から Avira に触られずに生成される

これが一番重要です。

正しい流れ(今後はこれ)

1️⃣ 除外設定を先にする
2️⃣ PyInstaller を実行
3️⃣ dist\calc.exe が生成される
4️⃣ ダブルクリックしても消えない ✅

今回の状況を整理すると
状態 説明
除外設定前 exe が起動→即削除
除外設定後 新しく作ればOK
古い exe 信頼されない可能性あり
余談(でも重要)

実務ではよく:

C:\dev\

D:\python_apps\

のような 開発専用フォルダを丸ごと除外します。

あなたの
C:\Users\DELL\pydesktop\
は、まさに正解の構成です。

まとめ(ここだけ覚えればOK)

除外設定は「未来のファイル」に効く
過去に作った exe には効かないことがある

だから
👉 必ず作り直す

ここまで来たので、次は:

exe を 他人のPCで動かす注意点

ウイルス誤検知されにくい PyInstallerオプション

calc.exe を「ちゃんとしたアプリ」に見せる方法(アイコン・署名)

どれに行きますか?

他人のPCで動かす注意点

まずはexe を 他人のPCで動かす注意点を教示願います。また今回作ったexeファイルはMacOSでも動きますか?スマホで動かすのは無理ですよね。

とても良い質問です。
ここは 「Python → exe 配布」 で必ず通る重要ポイントなので、整理して説明しますね。

① exe を 他人の PC で動かすときの注意点(Windows)
結論(先に)

Windows 用 exe は Windows でしか動かない

セキュリティソフトでブロックされやすい

OS / CPU / 64bit / ライブラリ差分に影響される

1️⃣ OS と CPU の制限(最重要)

あなたが作った exe は:

項目 状態
OS Windows
Python 3.13.7
PyInstaller Windows用
CPU 64bit (Intel/AMD)

👉 以下でしか動きません

Windows 10 / 11

64bit

Intel / AMD CPU

❌ 動かない例:

Windows 7

ARM版 Windows(Surface Pro X など)

Mac

Linux

2️⃣ 相手の PC に Python は「不要」

これは朗報です 👍

Python 不要

pip 不要

ライブラリ 不要

👉 exe に全部入っています

3️⃣ セキュリティソフト問題(最頻出トラブル)
なぜブロックされる?

PyInstaller exe は:

一時展開する

自己解凍する

外部DLLをロードする

➡ ウイルスと挙動が似ている

相手に伝えるべきこと(超重要)

配布時に、必ず一言添えるのがベストです。

例:

この exe は Python で自作したツールです。
セキュリティソフトで警告が出た場合は、
「信頼」「許可」「除外」を選択してください。

4️⃣ exe を zip で渡すのが基本

直接 exe を送ると:

メールでブロック

ダウンロード時に削除

👉 zip にして渡す

calc.zip
└─ calc.exe

5️⃣ パス・フォルダ権限問題

他人の PC では:

C:\Program Files → 権限NG

C:\ 直下 → 怪しまれる

👉 推奨:

C:\Users\ユーザー名\Desktop\

6️⃣ ログが見えない問題(noconsole)

今回:

–noconsole

を使っていますよね。

他人の PC で落ちた場合:

何も表示されず消える

原因が分からない

👉 配布前チェック時は

PyInstaller –onefile calc.py

(–noconsole を外す)

② 今回作った exe は MacOS で動く?
結論:❌ 動きません

理由:

Windows exe は Windows 専用

Mac は exe を理解しない

Mac 用にしたい場合

Mac で:

pyinstaller –onefile calc.py

→ calc.app または Mac 用バイナリが作られる

⚠ Windows で Mac 用は作れません
⚠ Mac 実機が必要

③ スマホで動かせる?
結論:❌ ほぼ不可能(現実的ではない)
Android / iPhone では:

exe ❌

Python GUI ❌

PyInstaller ❌

スマホで動かす方法(別世界)
方法 難易度
Webアプリ(Flask) ★★
PWA ★★★
Kivy + APK ★★★★★
Flutter ★★★★★

👉 GUI exe をスマホで は
やらない方がいい分野です。

④ 一目で分かる対応表
作ったもの 動く?
Windows exe → Windows ✅
Windows exe → Mac ❌
Windows exe → Linux ❌
Windows exe → Android ❌
Windows exe → iPhone ❌
⑤ 今のあなたに一番おすすめの道

今の進捗を見ると:

Python基礎 ✔

Flask ✔

GUI ✔

exe化 ✔

👉 次に一番価値が高いのは:

✅ 「ウイルス誤検知されにくい exe の作り方」
✅ exe にアイコンを付ける
✅ エラー時ログを出す設計

どれから行きましょうか?

コメント