背景
Pythonをexe化する方法としては「Pylnstaller」や「nuitka」があるもよう。
ひとまずこの記事をみながらPythonをexe化してみた。
https://qiita.com/ryoheiszk/items/2ea26594d24304c721e2
そしたらこのようなエラーが発生。
もしかしてwslでDockerは使えないのかと思い、以下コマンド
wsl docker
を実行してみたところ、案の定できないと言われた。
The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.
For details about using Docker Desktop with WSL 2, visit:
https://docs.docker.com/go/wsl2/
手順を見ると、なにやらUbuntuを入れてDockerDesktopと連携させるひつようがありそう・・・。
ということなので、はじめてやってみる方向けに手順を整理してみました。
手順
1.コマンドプロンプトを開く
Win+Rでファイル名を指定して実行を開き、cmd
と入力
2.Ubuntuをインストール
コマンドプロンプトで以下入力。
wsl --install -d Ubuntu-20.04
以下のように「Ubuntu 20.04 LTS はインストールされました。」が表示されたら完了。
自動的にLTSが起動され「Enter new UNIX username:」と指示されるが、無視してOKです。
3.既定のLinuxディストリビューションを設定
wslコマンドでデフォルト起動するディストリビューションを設定。
現在のディストリビューション一覧は以下コマンドで確認。
wsl -l -v
「docker-desktop」に*マークがついているため、Ubuntu-20.04をデフォルトに変更する。以下のコマンドで可能。
wsl -s Ubuntu-20.04
一覧を確認して変更されているかどうか確認するとよい。
4.DockerDesktopでWSL2を使う設定に変更
DockerDesktopで設定画面を開きGeneralへ。
「Use the WSL 2 based engine」にチェックボックスが入っていなかったらチェックをいれてApply&restart
次にResouresへ。
「Enable integration with my default WSL distro」にチェックボックスが入っていなかったらチェックをいれる。
そして先ほどインストールしたUbuntuを統合させるため、「Ubuntu-20.04」をONに。
その後同じくApply&restartをして完了。
5.wslでdockerが実行できるか確認
冒頭で実行できなかったwsl docker
コマンドを実行。
その結果、以下のようにDockerの使い方説明が出てきたら成功。
Pythonのexe化
冒頭にご紹介したQiitaの記事をそのまま参考にしています。
▼ディレクトリ構成
.
├── main.py
└── requirements.txt
コマンドプロンプトを開き上記ディレクトリに移動。
その後以下コードをワンライナーで実行。
wsl docker run --rm -v "$(pwd):/src/" cdrx/pyinstaller-windows -c \
"pip install -r requirements.txt && \
pyinstaller main.py --onedir --onefile --clean && \
mv dist/main.exe main.exe && \
rm -rf __pycache__/ build/ dist/ main.spec"
元記事で引っ掛かった点としては、「WSLで実行」部分がうまく理解できていなかったため手こずりました。
コードの冒頭でwsl
をつけた状態で実行するとうまくdocker runしてくれます。
これで気軽なexe化ライフを過ごせそうです・・・!