Help us understand the problem. What is going on with this article?

Pyinstaller で Python スクリプトを Windows で実行可能な .exe にする

More than 3 years have passed since last update.

Python スクリプトを Windows で実行可能な .exe にする

これまでは、py2exe や CX_Freeze など、setup.py をいちいち書かないといけませんでした。最近は PyInstaller がオススメということらしいので試してみた。

インストール

pip install pyinstaller

対象スクリプト

C:\Users\kounoike\Documents\python\installer-test>type hello.py
#!python
# coding: utf-8

print "hello world"

C:\Users\kounoike\Documents\python\installer-test>python hello.py
hello world

.exe の作成

pyinstaller hello.py

これだけ。面倒な setup.py の記述も何もなし。dist\hello 以下に hello.exe と必要なライブラリ群が出来上がる。

問題点

どうも py2exe などに比べて過剰にパッケージを取り込んでしまうようで、

#!python
# coding: utf-8

import matplotlib.pyplot as plt

print "hello world"

と書き換えただけで、dist 以下が100MBにも膨れ上がる。見てみると、IPython とか、QT4、OpenGLなど余計なものがまぎれこんでいるのがわかる。

そこで virtualenv ですよ。

というわけで、virtualenv を使いましょう。http://qiita.com/kounoike/items/14bfd7c328be0d69c770 などを参考にしてください。

PyInstaller を virtualenv で使う際の注意点は一つ。pywin32 を easy_install で入れておきましょう。

追記@2015/07/21

あれ、やっぱり日本語フォルダに置くとうまく動かない・・・

  • ネットワークドライブの日本語フォルダ作ってそのフォルダをシフト右クリックしてコマンドプロンプトで開く→大丈夫
  • デスクトップに日本語フォルダを作ってそのフォルダをシフト右クリックしてコマンドプロンプトで開く→ダメ

なんでネットワークドライブだと大丈夫なんだろう?

kounoike
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした