##はじめに
Ubuntsは使用したことがなく、Hyper-Vとはなんぞやって部分から入りました。
そこから、pythonをexe化する機会は世間的にあまり多くないのか様々な情報に当たりましたがexe化することができたのでまとめます。
環境
windows10 64bit
ubunts 20.04
python 3.7.7
pip 20.2.4
pyenv version 2020.11.15
pyinstaller 4.0
Hyper-vとは
windows 社が無償で提供する仮想化技術の一つ。
windows8~やwindows serverに標準搭載している機能。
サーバマネージャーから機能をONすることで使用可能となる。
詳細はこちら__Hyper-Vとは?__
-
Windows10のHyper-V上でUbuntuを動かす
-ubuntsの構築はこの方の記事を見て構築すれば問題ないと思います。
ネットワークの設定は後程、Hyper-Vマネージャーの作成した仮想マシンの設定にて、’ネットワークアダプター’を新しい仮想スイッチに設定する必要があります。
ubuntsの最新のパッケージ情報を取得
sudo apt update
ubuntsのパッケージ情報を更新
sudo apt upgrade
pyenvを使用するためにもろもろインストール
sudo apt install -y build-essential # c++コンパイラ
sudo apt install -y libffi-dev
sudo apt install -y libssl-dev # openssl
sudo apt install -y zlib1g-dev
sudo apt install -y liblzma-dev
sudo apt install -y libbz2-dev libreadline-dev libsqlite3-dev # bz2, readline, sqlite3
sudo apt install -y git
pyenvのパッケージのインストール
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
.bashrcの更新
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
pythonのインストール
pyenv install 3.7.7
デフォルトだと3.8.5を使用していたので今回の3.7.7をデフォルトで使用したいため
echo "3.7.7" > .python-version
pipenvのインストール
pip install pipenv
WARNING: You are using pip version 19.2.3, however version 20.2.4 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
こいつが出てくるとおもうので
pip install --upgrade pip
pipenvを初期設定
pipenv install
Pythonで開発するときに,プロジェクト毎のパッケージ管理や仮想環境の構築を簡単に自動で行ってくれるツール。パッケージのインストールならpip,仮想環境の構築ならvirtualenv(venv)を使えば対応できますが,pipenvはそれらをまとめてより簡単に扱えるようにサポートしてくれます.
Using /usr/bin/python3.8 to create virtualenv・・・
×Failed creating virtual enviroment
私の場合は上記のエラーが出てきました。
Pythonのバージョンが違うみたいなので
pipenv --python 3.7
これで使用するPythonのversionを指定しました。
activateする
pipenv shell
仮想環境にこれで入れました
パッケージが必要な場合は導入する
pipenv install argparse
pipenv install argparse==1.4.*
#Pipfileに入っていることを確認
cat Pipfile
#pyinstallerの導入
pip install pyinstaller
#pipenvにてpyinstallerを導入
pipenv install pyinstaller
exe化したいファイルが存在しているディレクトリに移動し、
#exe実行
LD_LIBRARY_PATH=/home/namae/.pyenv/bin/pyenv pyinstaller test.py
これでエラーが吐かれました。
OSError: Python library not found: libpython3.7m.so.1.0 libpython3.7mu.so.1.0 libpython3.7.so.1.0 libpython3.7m.so
This would mean your Python installation doesn't come with proper library files.
This usually happens by missing development package, or unsuitable build parameters of Python installation.
* On Debian/Ubuntu, you would need to install Python development packages
* apt-get install python3-dev
* apt-get install python-dev
* If you're building Python by yourself, please rebuild your Python with `--enable-shared` (or, `--enable-framework` on Darwin)
環境変数PYTHON_CONFIGURE_OPTSに、--enable-sharedオプションをセットせずにpyenv installしていると発生します。
LD_LIBRARY_PATH=/home/namae/.pyenv/versions/3.7.7 pyenv install
LD_LIBRARY_PATH=/home/namae/.pyenv/versions/3.7.7 pyinstaller test.py --onefile
Building EXE from EXE-00.toc completes successfully.
exeができました!!
#動作確認
cd dist
./test
hello
起動してます、OKです!
フォルダ大きい問題がありますが
私がexe化したいファイルだとそこまで大きく(約12MBくらいはありましたが)
できました。
参考にした記事