39
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pythonのGUIアプリを.exe化

Last updated at Posted at 2018-08-06

pythonでGUI

pythonには標準ライブラリのtkinterでGUIアプリが作れます。
これを使った案件があって書いたけれども、exe化するのに手間取ったため、記録を残しておきます。

mp3を入れる

このアプリにはアラート音としてmp3のファイルが入れてあります。
.exeにするのにpyinstallerを使いましたが、特殊なケースでもなければ、これだけで出来ます。(もちろん、tkinter等のGUIで書く必要あります)

pyinstaller test.py --onefile --noconsole

オプションで
--onefile 一つのファイルに
--noconsole コンソールが立ち上がらないように
みたいなのもつけられます。

ただし、それだけだとmp3等のファイルを入れることが出来ません。
test.specファイルのdataの場所に追記します。

test.spec
# -*- mode: python -*-

block_cipher = None


a = Analysis(['test.py'],
             pathex=['/Users/*****/test'],
             binaries=[],
             datas=[('./mygame/beep.mp3', 'mygame/sfx')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='test',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=False )
app = BUNDLE(exe,
             name='test.app',
             icon=None,
             bundle_identifier=None)

mygame/beep.mp3と入れていたのですが、なんども作ってはパスやらファイルの場所を確認して見るとmygame/sfxの中にbeep.mp3が入っているようでした。なので、第2引数にそのように追記です。これでbeep.mp3も読み込むことが出来ました。

seleniumのwebdriver

私の開発環境はmacなのですが、納品されて使用されるのはwindowsでした。そのため、windowsで改めて動作確認をして見た所、動作しない。。。
エラーを見ると、chromeのpathが云々と書いてあります。
そこで、https://www.inet-solutions.jp/technology/python-selenium/参考にさせて頂いて無事動きました。

macだとこれ↓で動くのですが、

test.py
browser = webdriver.Chrome()

windowsだとchromedriverを入れる必要があるのに加え、ファイルの移動、そして↓のように、pathを指定する必要がありました。

test.py
browser = webdriver.Chrome("c://chromedriver.exe")

※chromedriver.exeをcドライブ直下に置きました。

これはクライアントにも同じ場所に同じようにchromedriverを入れてもらう必要がありますね。

## 動作確認
改めてpyinstallで.exe化をして完成。
何時間も嵌ってしまいました。。。

参照

pyinstaller リファレンス
iNet Solutions

39
51
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?