pyenvによるPythonインストール手順

# 概要
pyenvによるPython環境を構築する必要が有ったので実施したが、ライブラリのインストールでかなりはまったので、記録を残しておきます

# 環境
Ubuntu 18.04 on WSL2
pyenv 2.4.10

# 構築手順
- ここではWSL2での操作手順となります。Mac、Windows OS 上へのインストールの場合は[公式サイト](https://github.com/pyenv/pyenv) をご確認ください
## pyenv インストール
```bash
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
```

## Pyenv のシェル環境を設定
```bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

source ~/.bashrc
```

## pyenvがインストールされたことを確認
```bash
 pyenv --version
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235774/96e29093-9664-31f9-9327-cd9ad7cb7467.png)

## インストール可能なPythonバージョンリストを確認
```bash
pyenv install -l
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235774/1b7bdd8d-8d72-02b3-1d30-1177c032d3d5.png)
(後略)
- ※ここでは、新し目で安定していることを期待して3.12.5 をインストールする事とします

## Pythonをインストール
```bash
pyenv install 3.12.5
```
### エラーが発生
```bash
Downloading Python-3.12.5.tar.xz...
-> https://www.python.org/ftp/python/3.12.5/Python-3.12.5.tar.xz
Installing Python-3.12.5...

BUILD FAILED (Ubuntu 22.04 using python-build 2.4.10)

Inspect or clean up the working tree at /tmp/python-build.20240817110835.3833
Results logged to /tmp/python-build.20240817110835.3833.log

Last 10 log lines:
  File "/tmp/python-build.20240817110835.3833/Python-3.12.5/Lib/ensurepip/__init__.py", line 200, in _bootstrap
    return _run_pip([*args, *_PACKAGE_NAMES], additional_paths)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/python-build.20240817110835.3833/Python-3.12.5/Lib/ensurepip/__init__.py", line 101, in _run_pip
    return subprocess.run(cmd, check=True).returncode
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/python-build.20240817110835.3833/Python-3.12.5/Lib/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/tmp/python-build.20240817110835.3833/Python-3.12.5/python', '-W', 'ignore::DeprecationWarning', '-c', '\nimport runpy\nimport sys\nsys.path = [\'/tmp/tmp59cuesi2/pip-24.2-py3-none-any.whl\'] + sys.path\nsys.argv[1:] = [\'install\', \'--no-cache-dir\', \'--no-index\', \'--find-links\', \'/tmp/tmp59cuesi2\', \'--root\', \'/\', \'--upgrade\', \'pip\']\nrunpy.run_module("pip", run_name="__main__", alter_sys=True)\n']' returned non-zero exit status 1.
make: *** [Makefile:2031: install] Error 1
```

- Copilotに質問した所以下コマンドで解決するかもと言われて実施しましたが、結果変わらず
```bash
sudo apt-get update
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl
```

- ログを確認した所、``` build-essential, libffi-dev, libbz2-dev ``` など諸々ライブラリが不足しているようでした
- 何回もトライしライブラリが不足していると言われ続け、疲れましたが結局以下コマンドでライブラリを追加する事でエラーすることなく、Pythonインストールが正常に成功しました

### 不足ライブラリのインストール
```bash
sudo apt-get update
sudo apt install build-essential
sudo apt-get install libffi-dev
sudo apt-get install libbz2-dev
sudo apt-get install libncurses5-dev
sudo apt-get install libreadline-dev
sudo apt-get install sqlite3 libsqlite3-dev
sudo apt-get install liblzma-dev
```

### 再インストール
- ここではアンインストールしてからインストールしています
```bash
pyenv uninstall 3.12.5
pyenv install 3.12.5
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235774/9375d470-c7a7-e326-f741-939d86495112.png)

### globalで使用できるようにする
```bash
pyenv global 3.12.5
```
## Pythonインストール結果を確認
```bash
python --version
```
- 3.12.5がインストールされたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235774/c19634f2-b6f6-4dac-4bd0-dd43b877f7f1.png)

# 最後に
久しぶりにPython環境構築をしましたが、ライブラリ依存エラーで時間を費やされました。
ここら辺をうまくまとめてインストールしてくれるツールが有れば嬉しいと思いました。
公式サイト以外で同じようなエラーを解決したサイトが有り助かりました。有難うございます。

# 参考サイト
[pyenv - GitHub](https://github.com/pyenv/pyenv)
[Ubuntuにpyenvをインストールする](https://qiita.com/middle_aged_rookie_programmer/items/0eb574e92a52c923e7ec)
[pyenvを使ってpythonをインストールするときに出たエラー達](https://zenn.dev/ziaensochan/articles/967361906abb77)