自分だけのPythonのバージョン管理ツール

# はじめに
複数のバージョンのPythonをインストールしています。
あのリポジトリを動かすのにはこのPythonの3.9、このリポジトリは3.11と使い分けるとき、以前はanacondaや、conda、pyenvなどを使っていました。しかし、特にanacondaやcondaは複数の環境管理が難しくて訳わからなくなりがちだし、容量もめちゃくちゃ食う。正直、嫌。

何で初心者向けの本はみんな「anaconda〜！」なんだろ？

で、いつもvenvで仮想環境を作っているのですが、毎回bashの設定ファイルである`.bash_profile`に記載されてる内容を入れ替えることでPythonのバージョン変更に対処してました。
ま、最後にインストールしたPythonが使われることに気付いたから、こんな面倒なことをしてたんですけどね。繰り返しますが、とにかく面倒。


# やりたいこと
condaや、pyenvの様にPythonのバージョンを使い分けたい！


# きっかけ
AzureのAI Searchでやりたいことがあっていろいろ試してたんですがなかなか実現できず、意気消沈。気分転換にLinuxを触ってみようと、UdemyのLinuxの講座を受講してたんですよ。MacにUTMを入れてubuntuも入れました。w

https://www.udemy.com/course/ok-linux/

この講座、bashの説明がすごく丁寧で分かりやすいんです。というか、まだ半分くらいしか終わっていないのですが、ここまではbashのみという感じ。w
この中で「alias」のレクチャーで閃いたんです。

この`alias`、**Pythonのバージョン変更に使える**



# 環境
2020 MacBook Air M1
ターミナルは普段は`bash`です。`zsh`にも使えると思う。
pythonはAnacondaとかは「使わず」以下からダウンロード、インストールしたモノです。

https://www.python.org/

# alias
講座の中のaliasのレクチャーで思いついたと書いたんですが、まずは**alias**って何なの？ってことは理解しなきゃならんですね。
一言で言うと「コマンドのショートカット」みたいなものです。

## ailiasの例
例えばbashで現在のフォルダに`aaa.txt`があるとして、ターミナルに
```$ open aaa.txt```
と入力してあげればテキストエディタなどで`aaa.txt`を、開くことができます。

が、何度も実行すると`open`と入力するのすら面倒になったとき、`op`と入力るすだけで`open`の機能を果たせると楽で良いよねー！

講座を聞ていて、こういう時に使うイメージを持ったんですよ。

```$ alias op=open```

こうやって入力してあげるとターミナルを閉じない限り、`op aaa.txt`で`aaa.txt`を開くことができるんですねー！

```$ op aaa.txt```



ずばり、いつ使うんだ？笑

でも、ターミナルを閉じるとこのaliasで設定した内容は消えちゃう。
永続化するためにはbashやzshの設定ファイルたる`.bash_profile`や`.zshrc`を編集する必要があります。おう！触っちまおう！
大丈夫！もし動かなくなったらPythonを再インストールだ！w



# bash_profileとzshrc
先にも書きましたが、僕の解釈はbashやzshの設定ファイル的なやつ。
これを開くにはターミナルで以下をポチポチ打ってテキストエディタで開きましょう。
```$ open .bash_profile```
もしくは
```$ opne .zshrc```

例えばPythonの設定のところはこんな感じで書かれてます。（スクショ）
![スクリーンショット 2024-03-23 15.49.41.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3655320/5961d009-fec6-69bf-95a7-30d26a037c57.jpeg)
解説するほど詳しくないけど、以下のような理解で良いと思う。

- PATHの行
PATHの行の一番最後の`${PATH}`は環境変数に記載されているPATHを取得してきているところ。その前に書かれているのが、Pythonの3.10ののパス。このパスを付け加えるということをしてます。
例えばターミナルで以下を打ってみましょう。
```$ echo ${PATH}```
`echo`は`bash`の`print`に該当します。
いっぱいパスが`:`で繋げられた形で表示されます。
![スクリーンショット 2024-03-23 23.03.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3655320/d8147b82-fbd0-379b-1005-73d722e8fd4a.png)
この先頭にPython3.10のパスを付け加えるということをやってます。


- exportの行
環境変数の書き換えを行う。

- aliasの行
そしてここでエイリアスを作る。
つまり、pythonと入力すると設定したパスの中からこのファイルを探してくるってこと。

**じゃぁさ、このpythonってショートカットをさ、python3.10用にすれば良いのでは？？**


# で、やってみよう！

- `.bash_profile`や`.zshrc`を開く
上に書いたけど、繰り返し書くと、
```open .bash_profile```
もしくは
```opne .zshrc```


- 内容を書き換える
例として3.11の場合、`python311`と打てば3.11になると嬉しくない？
ということで、下記スクショの下線の部分を`python`から`python311`に書き換えました。
他のバージョンも同様にして好きなように書き換えちゃいましょう。
![スクリーンショット 2024-03-23 15.49.41.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3655320/628190b0-77a2-26b5-289c-8ce52188461a.jpeg)
※ 僕はいつも使うのが3.10なのでメモとしてdefaultというコメントを入れてます。


- 書き換えた内容が反映されるのはターミナルを起動した時なので、ターミナルを一旦終了する。


- ターミナルを起動して確認してみる。
さぁ、レッツラゴ
それぞれのバージョンを確認してみましょう。
![スクリーンショット 2024-03-23 15.48.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3655320/6fe6aa1b-1a93-a2b3-40b2-9e28bfa44bcb.png)
良くな〜い？ニヤニヤ

python3.8を使いたい時はpython38と打てばYOSHI!
環境作るときに
`python38 -m venv .venv`
みたいな感じ。

怠惰なのでいつも使う3.10については単に`python`にしておいた
だってさ、怠惰であれってジョブズも言ってたじゃん

**Stay hungry! Stay foolish!**






# まとめ
快適になった！そしてaliasがどんな機能かやく理解できた！
ま、楽しんで何かやってれば応用先が出てくるって楽しい！
おっと、「楽しい」が「楽しい」を生んでんじゃん！
Linuxの講座が終わったらAzureがんばろっ！