pyenv + venv を使ったpythonのバージョン管理【windows＆ubuntu】

# 概要
　python初心者がバージョン管理をする際に参考になればと思います．

--->　[pyenvについて](https://anamorphosis.net/tech/pyenv%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6python%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%82%92%E8%A1%8C%E3%81%86/#:~:text=pyenv%E3%81%A8%E3%81%AF%E3%80%81python%E3%81%AE,%E3%81%8C%E7%B0%A1%E5%8D%98%E3%81%AB%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82)



# 【実行環境】

①　[Windows10 ＆ 11](#1-実行環境)
②　[ubuntu 20.04 (＆ 18.04)](#2-実行環境)

## 1. 実行環境

|OS|
|:---:|
|Windows10 ＆ 11|

### ★環境構築手順★

　pyenv + venv により，pythonのバージョン管理を行っていく．

#### Step.1　scoopのインストール

　[scoop](https://scoop.sh/)をインストールする．以下のコマンドを管理者権限なしのPowerShellで実行する．

```
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 

irm get.scoop.sh | iex
```

#### Step.2　pyenvの設定

①　まず，pyenvをインストールする．

```
scoop install pyenv 
```
②　(option)インストール可能なバージョンを確認する．
```
pyenv install -l
```
③　使用するバージョンをインストールする．(ここでは一例としてversion3.10.5をインストール．以下，同様．)
```
pyenv install 3.10.5
```
④　pyenvによってインストール済みのバージョンを表示する．
```
pyenv versions
```
【以下のように表示されればOK！】
```
3.10.5
```

⑤　先ほどインストールしたバージョンをpyenvで有効化する．
```
pyenv global 3.10.5

pyenv rehash
```

⑥　pyenvで有効化されているか確認する．
```
python --version
```

#### Step.3　仮想環境を作成
①　仮想環境を作成したいディレクトリへ移動する．
（一例として，ユーザ直下のディレクトリを指定しています．）
```
cd C:\Users\[Username]
```
②　仮想環境を取りまとめるフォルダを作成し，仮想環境を構築する．
(一例として，フォルダ名は「python_version」，仮想環境名は「python_venv_3.10.5」としています．)
```
mkdir python_version

cd python_version

python -m venv python_venv_3.10.5
```

これで準備はおしまい！早速，pythonを使っていきましょう．



### ★実際に使用するとき★
　使用する前に毎回有効化する必要があります．まずは，コマンドを開いて，仮想環境の有効化を行ってください．
```
C:\Users\[Username]\python_version\python_venv_3.10.5\Scripts\activate.bat
```
【以下のように表示されればOK！】
```
(python_venv_3.10.5) C:\Users\[Username]>
```

※　終了するときはコマンドを閉じてください．

　これでおしまいです！お疲れさまでした．

### ★バージョンを追加するとき★
①　pyenvでインストールできるpythonのバージョンを確認する．
```
pyenv install -l 
```
②　使用するバージョンをインストールする．
```
pyenv install 「使用するバージョン」
```
③　先ほどインストールしたバージョンをpyenvで有効化する．
```
pyenv global 「使用するバージョン」

pyenv rehash
```

⑤　正常にバージョンが切り替わったかを確認する．
```
python --version
```

【以下のように表示されればOK！】
```
Python 「使用するバージョン」
```
⑤　仮想環境の構築
```
cd \Users\[Username]\「仮想環境の構築フォルダ名」

python -m venv 「仮想環境名」
```




あとは使用する際に[ここ](#実際に使用するとき)と同様に行えばできます！
(以下のようなコマンドで仮想環境を有効化できます．)
```
C:\Users\[Username]\「仮想環境の構築フォルダ名」\「仮想環境名」\Scripts\activate.bat
```



## 2. 実行環境

|OS|
|:---:|
|ubuntu20.04 (＆ 18.04)|

※　pyenvのインストールは[こちらの記事](https://zenn.dev/neruo/articles/install-pyenv-on-ubuntu)を引用しました．私が試したのは20.04ですが，18.04でも可能なようです．

### ★環境構築手順★
　pyenv + venv により，pythonのバージョン管理を行っていく．


※【重要】pyenvのインストールはこちらの記事を引用したため，詳しい内容を確認したい場合はこちらの記事をご覧ください．
===>[こちら](https://zenn.dev/neruo/articles/install-pyenv-on-ubuntu)

#### Step.1　パッケージをアップデートする．
　パッケージをアップグレードして，再起動する．
```
sudo apt update

sudo apt upgrade

reboot
```

#### Step.2　pyenvの設定
①　pyenvの実行に必要なパッケージをインストールして，再起動する．
```
sudo apt install \
  build-essential libssl-dev zlib1g-dev \
  libbz2-dev libreadline-dev libsqlite3-dev curl llvm \
  libncursesw5-dev tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \
  libopencv-dev git

reboot
```
②　pyenvのパッケージをダウンロードする．(Gitに関する学習は[「サル先生のGit入門～バージョン管理を使いこなそう～」](https://backlog.com/ja/git-tutorial/)がおすすめです．)
```
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

sudo apt install pyenv

reboot
```
③　pyenvのインストール
Ⅰ．【ログインシェルにbashを使用している場合】
~/.profileの更新
```
sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.profile


echo 'eval "$(pyenv init --path)"' >>~/.profile
```
~/.bashrcの更新
```
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

source ~/.bashrc
```

Ⅱ．【ログインシェルにzshを使用した場合】
~/.zprofileの更新
```
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zprofile

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zprofile

echo 'eval "$(pyenv init --path)"' >> ~/.zprofile
```
~/.profileの更新
```
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile

echo 'eval "$(pyenv init --path)"' >> ~/.profile
```
~/.zshrcの更新
```
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
```

④ pyenvコマンドの確認(インストールされたバージョンの確認．)
　pyenvが正常にインストールされたかを確認する．
```
pyenv -v
```
【以下のように表示されたらOK！(バージョンは異なることがあります．)】
```
pyenv 2.3.3
```
⑤　インストールできるpythonのバージョンを確認する．
```
pyenv install -l
```
③　使用するバージョンをインストールする．(ここでは一例としてversion3.10.5をインストール．以下，同様．)
```
pyenv install 3.10.5
```
④　pyenvによってインストール済みのバージョンを表示する．
```
pyenv versions
```
【以下のように表示されればOK！】
```
3.10.5
```

⑤　インストールしたバージョンを認識するシェルに切り替える．
```
pyenv shell 3.10.5
```
⑥　シェルが正常に切り替わっているか確認する．
```
python --version
```
【以下のように表示されればOK！】
```
Python 3.10.5
```

#### Step.3　仮想環境を作成

　Windowsの場合とほとんど一緒です．

①　仮想環境を作成したいディレクトリへ移動する．
（一例として，ユーザ直下のディレクトリを指定しています．）
```
cd ~
```
②　仮想環境を取りまとめるフォルダを作成し，仮想環境を構築する．
(一例として，フォルダ名は「python_version」，仮想環境名は「python_venv_3.10.5」としています．)
```
mkdir python_version

cd python_version

python -m venv python_venv_3.10.5
```
以下のエラーが出たら、次を実行してください。

【エラー内容】
```
No module named venv
```
【解決策】
```
sudo apt install venv

reboot
```
※ubuntu18.04の場合はpythonを実行するとpython2が起動してしまう。そのため、以下のように実行する必要がある。

```
python3 -m venv 「仮想環境名」
```
　また、以下のエラーが出た場合は、

```
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.
```
次のコマンドを実行したあとに、再度仮想環境の構築を行う。

```
sudo apt-get install python3-venv
```

　~~pythonを実行した際にpython3を起動させるためには、[こちら](https://mixcubenet.com/linux/change_default_python_version_to_python3_on_ubuntu/)の記事を参照して変更してみてください。~~
　→pythonを実行した際にpython3を起動させるように設定を変更したところ、terminatorが開かなくなりました。元に戻してみると動きました。原因は現在模索中です。

これで準備はおしまい！早速，pythonを使っていきましょう．

### ★実際に使用する時★
　使用する前に毎回有効化する必要があります．まずは，コマンドを開いて，仮想環境の有効化を行ってください．
```
source ~/python_version/python_venv_3.10.5/bin/activate
```
【以下のように表示されればOK！】
```
(python_venv_3.10.5) @[Username]:$
```

◆ここまで来たら，あとはpythonをどんどん使っていきましょう！◆



※1　終了するときは以下のコマンドを実行する．
```
deactivate
```

※2　インストールしたpythonのバージョンを確認するとき．
```
pyenv versions
```

　以上で説明は終了です．お疲れ様でした．



### ★バージョンを追加するとき★
①　pyenvでインストールできるpythonのバージョンを確認する．
```
pyenv install -l 
```
②　使用するバージョンをインストールする．
```
pyenv install 「使用するバージョン」
```
③　インストールしたバージョンを認識するシェルに切り替える．
```
pyenv shell 3.10.5
```
④　シェルが正常に切り替わっているか確認する．
```
python --version
```
【以下のように表示されればOK！】
```
Python 「使用するバージョン」
```
⑤　仮想環境の構築
```
cd ~/「仮想環境の構築フォルダ名」

python -m venv 「仮想環境名」
```

あとは使用する際に[ここ](#実際に使用する時)と同様に行えばできます！
(以下のようなコマンドで仮想環境を有効化できます．)
```
source ~/「仮想環境の構築フォルダ名」/「仮想環境名」/bin/activate
```


# 参考文献
・[scoop](https://scoop.sh/)
・[ubuntu 20.04 / 18.04 に pyenv をインストール](https://zenn.dev/neruo/articles/install-pyenv-on-ubuntu)
・[pyenvを使ってpythonのバージョン管理を行う](https://anamorphosis.net/tech/pyenv%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6python%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%82%92%E8%A1%8C%E3%81%86/#:~:text=pyenv%E3%81%A8%E3%81%AF%E3%80%81python%E3%81%AE,%E3%81%8C%E7%B0%A1%E5%8D%98%E3%81%AB%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82)