Just beat IT

情報系学生が技術的なことから昨日の夕飯のことまで

【PyInstaller】インストールしてもpyinstaller がコマンドとして認識されない問題【解決】

はじめに

どうも!pythonに触り始めてからCを書く気が失せてしまったロピタルです( 一一)

今回は、pythonのファイルをWindows用の実行ファイル(.exe)に変換できるPyInstallerというツールをインストールする際にパス周りで苦労したので、簡単に解決までの道のりを書いときます(^^♪

www.pyinstaller.org

結論だけ手短に話すと、Microsoft StoreでインストールしたPyhtonだとうまくいかなかったみたいです。こちらのサイトを参考にインストールし直したらうまくいきました。

もくじ

環境

Windows 10Python 3.7.9がインストールされている状態です。なお、PyInstallerWSL上では正しく動かないっぽいです。(一度、何も考えずWSL上でインストールして実行したのですが、出力されたファイルが実行ファイルでも何でもありませんでした笑)

状況

公式ページの通りにpipを用いてインストールを行いました。

pip install pyinstaller

インストールは無事完了しました。pip listで確認。

> pip list
Package                   Version
------------------------- ---------
altgraph                  0.17
future                    0.18.2
pefile                    2019.4.18
pip                       20.2.4
pyinstaller               4.0
pyinstaller-hooks-contrib 2020.10
pywin32-ctypes            0.2.0
setuptools                40.6.2

確かにインストールされています。しかし、pyinstallerを実行しようとすると

> pyinstaller
'pyinstaller' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

となります。

解決

解決を順を追って書きます。

解決案1(失敗):パスを通す

「操作可能なプログラムとして認識されていない」ということだったので、pyinstallerのインストール先を環境変数PATHに追加することを考えました。

インストール先は以下のコマンドで確認可能です。

pip -show pyinstaller

インストール先を確認しましたが実行ファイルは見つからず、パスを通しても無意味でした( 一一)

解決案2(失敗):インストール方法の変更

ネットで調べると、インストールコマンドが

pip install pyinstaller

でなく

pip install PyInstaller

となっているページがあることに気づきました。

そこで、下のコマンドで行ったところインストール時に「ここをパスに追加してね!」的なメッセージが表示されました!そして、そこをパスに追加するとpyinstallerが動作しました( *´艸`)

しかし…

うまく動作しない問題

pyinstaller sample.py

といった形で実行したところ、以下のようなエラーが(-_-;)

raise error(exception.winerror, exception.function, exception.strerror)
win32ctypes.pywin32.pywintypes.error: (1920, 'LoadLibraryExW', 'The file cannot be accessed by the system.')

どうしたものか…

解決案3(成功):Pythonを再インストール

Microsoft StoreでインストールしたPyhtonだとうまくいかないみたいです(-_-;)その原因を探ろうかとも思ったのですが、難しそうなので諦めました(すみません)

でことで、Pythonをアンインストールし、こちらのサイトを参考に再インストールしたところ無事にpyinstallerを利用することができました!

pythonのコードを実行ファイルに変換できるの便利!!!!!!!

まとめ

今回はpyinstallerのインストールで詰まった点について書きました!

しょうもない記事でしたが、お役に立てば幸いです(-_-;)