Windows向けPyside 使って作ったスクリプトをexe化するメモ

自分用メモね。たぶん普通にググってヒットしたサイトを参考にしていただいた方が有意義だと思いまする。

構築目標環境
Python : 2.7
Qt : 4.8
PySide : 1.x

ということで、それぞれダウンロードします。

Python 2.7.12 [Python.org]
Qt 4.8.7

Qt 4.8.7はQt 4.8系の最終リリースだそうですが、リリースは昨年5月。Mac的にはYosemiteへの対応がより良くなっているっていう物ですけど、裏返すとこれが最終リリースということから、El Capitan以降にはQt 5系を利用していくべきなのでしょうね(Yosemite相手でも正式対応はQt5だそうです)。でも今回は対Windows 7向けのアプリケーション作成が目的なので…
Windows向けはvs2010、vs2008、mingw482って三つのタイプが配布されています。これはどの環境でビルドするつもりかってところで選ぶのでしょうね。今回は何も使わないのでとりあえずvs2010ので入れました。
Pythonは今後の主流は3.5系になるのでしょうけど、現在自分が主に使っているのが2.7系ということで2.7。
どちらも普通にインストーラを使ってデフォルト値のままインストールです。ただし、Pythonについては環境変数のPathにPythonのパスを書き加える必要があるかもです(環境変数のPathにC:\Python27を追加。余談ながら、WIndows 10の環境変数周りのGUIは随分と分かりやすくなりましたね)。

で、PySideをインストールです。

python -m pip install -U PySide

コマンドプロンプトで実行することで、PySideのダウンロードとインストールが行われます。ちなみにこのpipはPythonに付属してきているものですが、コマンド実行するとバージョン古いわって言われるので、ついでに上げておきましょう。

python -m pip install -upgrade pip

以上で、PySideを利用する準備ができました。
これでPySideを利用したGUIアプリは python script_file.py を実行することで利用できるようになるわけですが、これをPythonもQtも入れていない環境で実行できるようにしたいわけです。つまりexeファイル化したい、と。
Pythonにはcx_Freezeというものが存在するそうです。

python -m pip install cx_Freeze

こいつの使い方は、setup.py ってファイルを作って(その中に cx_Freeze をインポートする記述をし)、setup.pyを引数buildをつけて実行してやる、となるそうです。

Pythonをcx_Freezeでexeにする (windows編) [みーのぺーじ]

やってみます。上記ページを参考に、setup.pyを作ります。
作ったsetup.pyは以下の通り。上記ページをそのままパクってます。

import sys
from cx_Freeze import setup, Executable

#ここに必要なモジュールを入れとく
includes = ["PySide.QtCore","PySide.QtGui","sys","socket" , "math" , "time" , "datetime"] 

base = None
if sys.platform == "win32":
    base = "Win32GUI"

#アプリケーション名とバージョンとどのPythonファイルをアプリ化するかを
#指定してますが、実際問題、これがどう効いてくるのかはわかりません。
#Pythonスクリプトの指定は必須だけど。
setup(  name = "アプリ名",
        version = "バージョンナンバー",
        options = {"build_exe": {"includes": includes}},
        executables = [Executable("パイソンファイル.py", base=base)])



というわけで、これで

python setup.py build

を実行してやると下図のようにexeファイルが出来上がりました(ファイル名はひ・み・つ)。



上図の通りWindows 10でbuildしていますけど、出来上がったアプリはWindows 7マシンで動作しました。ちなみに元々のPythonスクリプト自体はMac上で書いていますw

とりあえず基本的なところはこんな感じですかね。