14
11

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.

PyAutoGUIを使ったPythonアプリをexe化するまで

Posted at

Pythonアプリを、Python入っていないPCで動かすには

自作のPythonアプリをビルド(= exe化)して、Pythonが入っていないPCでも動かせるようにするための手段としては、Windowsの場合は、

  1. PyInstaller
  2. py2exe

のほぼ2択っぽい。
Macだとpy2exeは使えないが、py2appというライブラリが使えるらしい(未確認)。

PyInstallerはpy2exeに比べて手軽に扱えるが、exe実行時の起動の速さは、py2exeの方に軍配が上がる、との話。

で、PyAutoGUIを使ったPythonアプリをpy2exeでexe化を試みたところ、最終的には乗り越えたものの、私の環境ではいろいろと壁があったのでメモっておく。

当方の環境

  • Windows10
  • Python 3.7
    → NGだったので3.4に切り替えて問題解消した

setup.pyの作成

py2exeでは、setup.pyというファイルを用意する必要がある。
setup.pyには、ビルドのための設定を書く。

↓ こちらを大いに参考にさせていただいた。Python2ベースの記事だが、Python3でも参考になる。

py2exeでPythonのスクリプトを実行ファイル(exe)にする【py2exe】- ku-mu*様
http://cocodrips.hateblo.jp/entry/2015/06/03/232419

Python3.7ではビルド時にエラー → Python3.4に乗り換える

しかし、Python3.7でまずビルドを試みるとエラー。

python .\setup.py py2exe
running py2exe
Traceback (most recent call last):
  File ".\setup.py", line 11, in <module>
...
  File "C:\Users\Chihiro\AppData\Local\Programs\Python\Python37\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
...
  File "C:\Users\Chihiro\Techpit-Market\instagram-auto\lib\site-packages\py2exe\mf3.py", line 417, in _scan_opcodes
    yield "store", (names[oparg],)
IndexError: tuple index out of range

living-sun.comでのQAによると、
https://living-sun.com/ja/python/707242-compiling-python-script-to-exe-with-py2exe-getting-error-python-selenium-py2exe-helium.html

現在py2exeは3.4までのPythonをサポートしています

何ということでしょう……。
ということでPython3.4に切り替える。

Windowsでは複数バージョンのPythonを共存できるらしい

なんと。寡聞にして存じ上げなかった。

Windows で複数バージョンの Python を使う@landwarrior
https://qiita.com/landwarrior/items/1b5e0f9af5316a025fe0

Python3.4を入れた後、

$ py -3.4 -m venv foo

で、3.4のvenv環境を作れる。

しかし3.4上でPyAutoGUI入れられず → setuptoolsのバージョン上げて解消

pip install PyAutoGUI
Collecting PyAutoGUI
  Using cached 
...
    Complete output from command python setup.py egg_info:
    C:\Python34\lib\distutils\dist.py:260: UserWarning: Unknown distribution option: 'long_description_content_type'
      warnings.warn(msg)
    error in PyAutoGUI setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Expected version spec in pyobjc-core;platform_system=="Darwin" at ;platform_system=="Darwin"

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\Chihiro\AppData\Local\Temp\pip-build-6qgzk2sj\PyAutoGUI
...

zhgmen様より。
https://www.cnblogs.com/zhgmen/p/11205280.html

pip install setuptools -U

でこれも解消。

しかし今度はPillowが入らず → pipのバージョン上げて解消

さすがにそろそろくじけそうになるが、

Collecting Pillow (from PyAutoGUI)
  Downloading 
...
    C:\Users\Chihiro\AppData\Local\Temp\pip-build-95awba34\Pillow\setup.py:12: PkgResourcesDeprecationWarning: Parameters to load are deprecated.  Call .resolve and .require separately.
      import os
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
...
      File "C:\Users\Chihiro\AppData\Local\Temp\pip-build-95awba34\Pillow\setup.py", line 324, in finalize_options
        if sys.version_info.major >= 3 and not self.parallel:
      File "C:\Python34\lib\distutils\cmd.py", line 103, in __getattr__
        raise AttributeError(attr)
    AttributeError: parallel

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\Chihiro\AppData\Local\Temp\pip-build-95awba34\Pillow

ちょっとばかりふて寝した後、なんとなく、さっきはsetuptoolsのバージョン上げたら解消したんだから、今度はpipのバージョン上げたらどうかと考え、

$ python -m pip install --upgrade pip

して、pipを19.2.1に上げたらなんと解消。

これでようやく目的を達成できた。

思ったこと

いつもいつも、ネットの皆様に助けられてばかりですね。
なんだかんだで、ホントに良い時代になったものです。

14
11
0

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
14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?