MENU
  • ホーム
  • プログラミング
  • ワードプレス
    • プラグインプラグイン関連記事
    • 賢威賢威のカスタマイズ
    • CSSCSSの関連記事
  • サイト情報
    • プライバシーポリシー
  • ツール
    • メルエディター
    • フリマスパイダー – 疾風
    • フリマスパイダー
    • -ポイ活くんα-
  • お問い合わせ
あらゆるモノにHackする、探究者の読み物。
Let's Hack Tech
  • ホーム
  • プログラミング
  • ワードプレス
    • プラグインプラグイン関連記事
    • 賢威賢威のカスタマイズ
    • CSSCSSの関連記事
  • サイト情報
    • プライバシーポリシー
  • ツール
    • メルエディター
    • フリマスパイダー – 疾風
    • フリマスパイダー
    • -ポイ活くんα-
  • お問い合わせ
Let's Hack Tech
  • ホーム
  • プログラミング
  • ワードプレス
    • プラグインプラグイン関連記事
    • 賢威賢威のカスタマイズ
    • CSSCSSの関連記事
  • サイト情報
    • プライバシーポリシー
  • ツール
    • メルエディター
    • フリマスパイダー – 疾風
    • フリマスパイダー
    • -ポイ活くんα-
  • お問い合わせ
  1. ホーム
  2. プログラミング
  3. 言語別
  4. Python
  5. Pythonスクリプトを配布するためのexe化モジュールPyInstallerまとめ

Pythonスクリプトを配布するためのexe化モジュールPyInstallerまとめ

2022 5/23
Python
2019-11-262022-05-23
Python → exe
目次

PyInstaller

付加コマンド

–onefile

最終的に吐き出されるファイルを、1つのexeファイルにバンドルする。

副作用として、

  • コマンド終了までの処理時間が長くなる。
  • exeファイルの起動までの動作が重たくなる。

等が挙げられる。

–noconsole

exeファイルの起動時に黒いコンソールを出現させなくする。
GUIを作っている場合など、コンソールでの情報表示が不要な場合に利用。

–add-data

png、jpg、ico、など各種画像ファイル、その他の非バイナリファイルをバンドルするためのコマンド。

specファイルを編集する方法もあるが、それはそれで色々面倒なので、ファイルが少なければコマンドで指定が楽。

–add-data <現在のファイルパス>;<バンドル後のファイルパス>
区切りにはセミコロンを使う。

プログラムのソースから参照している位置がずれない様に注意が必要。
色々考えるのが面倒なら直下配置 ” . ” をdist_pathに指定するのが無難。

使用例:

PyInstaller --add-data .icon1.png;. --add-data .icon2.png;.

GUIを作ってexe化した場合など、iconなどを使っている場合でも、標準の動作では画像ファイルはバンドルされない。

そのままでは配布時に画像ファイルも別途合わせて配布ZIPに織り込む必要があるので、–add-dataを使ってexeファイルにバンドルする方が見栄えが良い。

–onefileを指定して画像をバンドルしたい場合は、

import sys
from pathlib import Path


def resource_path(relative_path):
    base_path = getattr(sys, '_MEIPASS', str(Path(__file__).absolute().parent))
    return str(Path(base_path).joinpath(relative_path))

–onefileを指定した場合、スクリプトで画像などのリソースを読み込む際は、この関数に通して読み込む。

PyQtでアイコンを読み込む場合の例は以下の例のようにresource_path関数を通す必要がある。

class MainWindow(QtWidgets.QMainWindow):

    signalStatus = pyqtSignal(str)

    def __init__(self, parent=None):
        super(self.__class__, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.setWindowIcon(QIcon(resource_path('icon.png')))
Python
exe PyInstaller Python
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

シンプル美と機能性を両立させた、国内最高峰のWordPressテーマ『SWELL』
人気記事
  • IQテストいくつか受けてみました
    ネット上で信憑性がありそうなIQテスト、5種類まとめて受けた結果…
  • hayate
    メルカリの商品を世界最速で購入するためだけのアラートツール
  • 【Python】BeautifulSoupの使い方・基本メソッド一覧|スクレイピング
  • Pythonファイルのexe化
    【悲報】PyInstallerさん、300MBのexeファイルを吐き出すようになる
  • Amazon Echo アレクサのコマンドまとめ
    AmazonEchoの使い方とできる事、アレクサへの指示コマンド一覧
最近の投稿
  • 正規表現処理の濁点でハマった話2024-12-12
  • 保護中: 疾風v2更新履歴2024-05-31
  • 【自営・経営者向け・税金も】クレジットカードガチ勢による最強クレカ解説2023-10-23
  • PyQt5 QListWidget の item削除でtextBoxのフォーカスが奪われる2023-03-05
  • WordPressからのメールが届かない時の調査と解決法2023-02-27
目次
目次