Python

py2exeの使い方を解説

2021年10月10日

py2exeの使い方

PythonでEXEファイルを作成してみようと考えて、py2exeを利用してみました。

私はMacがメインなので、インストールしてみましたが動きません。

py2exeはMacでは動かないので、Mac使いの人はpy2appやPyInstallerを調べた方が良いのですが、私の中でpy2appは利用しない方が良いと判断しています。

詳しくは「py2appは使わない方が良い?」をご確認ください。

py2appは使わない方が良い?
py2appは今のところ使わない方が良い?
試しにインストールしてみましたが、Macで動きませんでした。 原因を追えば追うほど、エラーが増えていき時間の無駄です。 この記事ではpy2appのインストールから動かない原因までを解説しています。 py2appのモジュールを導入することを検 ...

続きを見る

この記事は、py2exeを使ってWindowsで動作するかについて解説しています。

py2exeとは

py2exeとは

スタンドアロンのWindows実行可能プログラムを構築できるようにする拡張機能です。

Windowsサービスの構築やDLLなどの機能を利用できますが、確実に動作するかは保証されていません。

py2exeのインストール

py2exeのインストール方法は、pipコマンドを利用してインストールします。

$ pip install py2exe

Successfullyって出たけど、めっちゃWanningやらERRORが出てきた。

Collecting py2exe
  Downloading py2exe-0.10.4.1.tar.gz (109 kB)
     |████████████████████████████████| 109 kB 2.4 MB/s 
    ERROR: Command errored out with exit status 1:
     command: /Users/ユーザ名/venv/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/3p/6qt98wxd2b7375tcgx27tndh0000gn/T/pip-install-edo273c_/py2exe_593d24841f584b42bba6a3b7fc3d1a77/setup.py'"'"'; __file__='"'"'/private/var/folders/3p/6qt98wxd2b7375tcgx27tndh0000gn/T/pip-install-edo273c_/py2exe_593d24841f584b42bba6a3b7fc3d1a77/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/3p/6qt98wxd2b7375tcgx27tndh0000gn/T/pip-pip-egg-info-mdp4uaup
         cwd: /private/var/folders/3p/6qt98wxd2b7375tcgx27tndh0000gn/T/pip-install-edo273c_/py2exe_593d24841f584b42bba6a3b7fc3d1a77/
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/3p/6qt98wxd2b7375tcgx27tndh0000gn/T/pip-install-edo273c_/py2exe_593d24841f584b42bba6a3b7fc3d1a77/setup.py", line 11, in <module>
        raise RuntimeError("This package requires Windows")
    RuntimeError: This package requires Windows
    ----------------------------------------

〜〜〜〜〜〜〜〜
多すぎるので省略
〜〜〜〜〜〜〜〜

    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/7d/2b/5bb512a67aaa465f8629f2c0d759f56b8136a973b355db32870beb5c76af/py2exe-0.10.0.2.tar.gz#sha256=40d785a92c85908c4829bcfd4ae9985d20dcdb805e50097c8cba78608b06a81c (from https://pypi.org/simple/py2exe/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  Downloading py2exe-0.9.2.2-py33.py34-none-any.whl (270 kB)
     |████████████████████████████████| 270 kB 18.6 MB/s 
Installing collected packages: py2exe
Successfully installed py2exe-0.9.2.2

エラーが出ている内容を確認すると、「This package requires Windows」ってことでWindowsパッケージが必要みたいです。

そのため、MacやLinuxでは動かないです。

Macで強引に動かそうと考えると、wineとか入れて動かすしかないかもですね(Windows準備した方がWine使うより良いです)。

ちょっと気になるのは、Replitだったらいけるのか?

時間ある時に試してみます。

なので、Windowsにインストールしてみます。

実行してみましたが、エラーが出ませんでした。

Windows インストール

EXEファイルを作って実行

EXEファイルを作るには、メインで動くPythonファイルとセットアップ用のPythonファイルが必要になります。

実行ファイルとセットアップファイルの作成

今回の実行ファイルは下記になります。

print('EXE化してみたよ')

次にセットアップファイルを作ります。

from distutils.core import setup
import py2exe

setup(console=['py2_sample.py'])

setupを使ってconsoleにファイル名を指定するだけです。

EXEファイルの作成

試しにMacで実行してみましたが、エラーが出て作成されませんでした。

EXEファイルを作成するには、Windowsで下記のコマンドをコマンドプロンプトで実行します。

python setup.py py2exe

実行するとdistフォルダが作成されて、この中にexeファイルが作られます。

distフォルダが作成される

実行

exeファイルをクリックすると実行されますが、コマンドプロンプトが一瞬表示されるだけです。

なので、コマンドプロンプトより実行してみます。

cdでdistの中に入って、exeを実行しています。

赤枠が出力結果になります。

Windows実行

まとめ

py2exeは、Macで動きません。

インストールの時に、必要パッケージが無いエラーや警告がたくさん出てきます。

では、WindowsでEXEファイルを作るのは難しいかというとカンタンでした。

Pythonの実行ファイルとEXE化を行うためのSetupファイルを作成するだけです。

今回は1つのファイルだったのですが、複数ファイルだった場合や他のモジュールとかの組み合わせだったらどうなるのかは検証しないといけないです。

Udemyへ

今後の人生を豊かにする為にキャリアアップのステップとして、自分への投資をしてみませんか?

-Python
-,