msk-works

オフライン環境でPyInstallerをインストールする為のTips

April 29, 2020

こんにちは。底辺SIerのマサキです。

「Pythonで作ったツールを他の人に渡したいけど、わざわざPythonをインストールさせるのも悪い気がする」

底辺SIerをやっていると、こういった場面によく出会します。

そこで役に立つのが、PythonをWindows用のexeファイルに変換してくれるモジュール「PyInstaller」です。

本来であれば、pipを使えば一発でインストールができるのですが、ド底辺SIer企業ではインターネットに接続された開発PCなどありません。

過酷な環境下でも、

「自分が苦労してでも利用者には苦労をかけたくない」

そんな「優しさ駆動開発」を提唱している方々に、「オフライン環境でPyInstallerをインストールする為のTips」をお届けします。

環境

    ・OS: Windows7
    ・Python: 3.7.5
    ・PyInstaller: 3.6

まずは普通にインストールしてみる

  1. PyWin32(https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/)をインストール
  2. PyInstallerのgithubから zipをダウンロード (https://github.com/pyinstaller/pyinstaller/archive/master.zip)
  3. ダウンロードしてきたzipを適当なディレクトリに解凍
  4. 解凍して出てきた「pyinstaller-master」のパスを環境変数に追加する
  5. 「python setup.py install」を実行
  6. すると「pkg_resources.DistributionNotFound」というエラーが発生 調べてみるとsys.pathが不足しているっぽいが解決方法が分からず断念

setup.pyを使わずにやってみる

  1. PyWin32(https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/)をインストール
  2. PyInstallerのgithubから zipをダウンロード (https://github.com/pyinstaller/pyinstaller/archive/master.zip)
  3. ダウンロードしてきたzipを適当なディレクトリに解凍
  4. 解凍して出てきた「pyinstaller-master」のパスを環境変数に追加する
  5. cmdを開き、exe化したいPythonファイルがあるディレクトリにcd
  6. 「python pyinstaller.py “pythonファイル名”」を実行
  7. エラーが何個か出るので、下記の対応を行う

エラー内容: [“Please install PyWin32 or pywin32-ctypes”]

対応: 「pyinstaller-master\PyInstaller」にある「compat.py」が悪さをしているので修正する

修正前

    from win32ctypes.pywin32 import pywintypes
    from win32ctypes.pywin32 import win32api

修正後

    import pywintypes
    import win32api



エラー内容: [“ImportError: No module named altgraph”]

対応: 「altgraph」というモジュールをインストールする

  1. pypiからaltgraphのwhlをダウンロードする(https://pypi.org/project/altgraph/#files)
  2. cmdでダウンロードしたファイルが配置されているディレクトリに移動
  3. 「pip install —no-deps altgraph-0.17-py2.py3-none-any.whl」を実行(whlファイル名はダウンドードしたものに合わせてください)

エラー内容: [“ImportError: No module named pefile”]

対応: 「pefile」というモジュールを配置する

  1. pypiからpefileのtar.gzをダウンロードする(https://pypi.org/project/pefile/#files)
  2. tar.gzを解凍し、解凍されたディレクトリの中身を全てコピー
  3. 「pyinstaller-master」フォルダにコピーしたものを配置(一部のファイルは上書きするかを問われるので「いいえ」を押す)

上記でエラーの対応は環境です。

再度、手順5の”「python pyinstaller.py “pythonファイル名”」を実行”をやってみましょう。

無事にexeファイルが生成されるはずです。