pyenv
前回、matplotlibで大量の画像を作成する場合のメモリリークをしにくい方法を紹介しました。

今回は最近Mac miniを購入し、Python環境を再度構築したのですが、その際にHomebrewを使ってpyenvをインストールし、複数のバージョンのPythonを使えるようにしたので、その流れを紹介します。
実は前のMacbook Air(2019)では、Pythonを公式サイトからダウンロードして、インストールしたおかげで、Pythonの新しいバージョンが出ても全部インストールし直しになるようで新しいバージョンを試すのが億劫になっていました。
ということで今回は少なくともPythonのバージョンを変えられるようにしようと思ったのが事の発端。
Pythonのバージョンを変えるのに「pyenv」というのを使うのは知っていたのですが、正直よく分からんし、特に普段使っていくには不便がなかったので避けていた話題でもあります。
で今回は重い腰を上げて、色々と調べてみると、こんな記事を見つけました。
あらら、pyenvはもうダメなのか、どうやらRyeというもっと便利なツールがあるらしいことをなんとなく理解しました。
そして「Rye」はどんなツールだろうと思って調べてみたら、Pythonのプロジェクト毎にバージョンを変えられるツールらしいということもなんとなく分かりました。

正直、今までpyenvすら使ってなかったし、プロジェクト毎に違うバージョンのPythonを使うなんてこともなかったので、全くこういうツールには興味がなかったわけです。
また今も自分で必要なプログラムを書いているだけなので、今後もそこまで必要にならないでしょうと。
ということで今回は一歩前進するだけの「pyenv」をインストールして、異なるバージョンのPython環境を構築できるようにすることを目標に環境構築を行いました。
そのため、Pythonのプロのプログラマからすると時代遅れのことをしていますので、それを理解してこの記事を読んでください。
それでは始めていきましょう。
Homebrewのインストール
pyenvをMacOSにインストールするには、まずはHomebrewをインストールします。
HomebrewはMacOS用のパッケージマネージャでMacOSに色々なソフト(それこそPythonとか)を簡単なコマンドでインストールしたり、アンインストールしたりできます。
インストールするにはまずはHomebrewのWebサイトに行きます。
トップページの上の方に大きく「インストール」と書いてあり、その下にあるコマンドをコピーします。

コピーしたコマンドをターミナルに貼り付け、実行します。
インストールが完了すると最後の方に下のようなコマンドが出てきますので、一つずつターミナルに貼り付け実行します。
注:下のコマンドは書き換えてあるので使えません。Homebrewが出したコマンドを実行してください。
echo >> /Users/username/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/username/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
これでHomebrewへのパスが通りますので、ちゃんとインストールできて、パスが通っているかHomebrewのヘルプを表示して確認します。
brew help
実行結果
Example usage:
brew search TEXT|/REGEX/
brew info [FORMULA|CASK...]
brew install FORMULA|CASK...
brew update
brew upgrade [FORMULA|CASK...]
brew uninstall FORMULA|CASK...
brew list [FORMULA|CASK...]
Troubleshooting:
brew config
brew doctor
brew install --verbose --debug FORMULA|CASK
Contributing:
brew create URL [--no-fetch]
brew edit [FORMULA|CASK...]
Further help:
brew commands
brew help [COMMAND]
man brew
https://docs.brew.sh
こんな感じでHomebrewのヘルプが出てきたら正しくインストールされています。
pyenvのインストール
次にpyenvのインストールをしていきます。
Homebrewで新しいソフトをインストールするには「brew install ソフト名」とします。
今回はpyenvなので「brew install pyenv」とします。
brew install pyenv
インストールが終わったら、pyenvのバージョンを表示してみて、正しくインストールできているか確認します。
pyenv -v
実行結果
pyenv 2.4.19
こんな感じでバージョンが表示されたら正しくインストールされています。
次にpyenvへのパスを通します。
以下の4つのコマンドを順々にターミナルに貼り付け、実行します。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
これでpyenvのインストールは完了です。
Pythonのインストール
次にPythonをインストールしていきます。
まずインストール可能なPythonのバージョンを確認するため、下のコマンドをターミナルで実行します。
pyenv install --list
大量のPythonのバージョンが出てきますので、その中から自分がインストールしたいものを選びます。
今回はとりあえずこの時点での最新バージョンということで、「3.13.0」を選択しました。
pyenvを使った特定バージョンのPythonのインストールは「pyenv install Pythonバージョン」で行います。
ということで「3.13.0」をインストールする場合はこんな感じです。
pyenv install 3.13.0
これで指定したバージョンのPythonがインストールされますが、この後使ってみた時に私の場合は「ModuleNotFoundError: No module named ‘_lzma’」というエラーが発生しました。
もし同じエラーが発生した場合はまずインストールしたPythonをアンインストールします。
pyenv uninstall 3.13.0
そしてHomebrewで「xz」というツールをインストールします。
brew install xz
そして再度pyenvでPythonをインストールします。
pyenv install 3.13.0
これで「ModuleNotFoundError: No module named ‘_lzma’」というエラーは発生しなくなると思います。
あとはシステム全体で使用するPythonのバージョンを設定します。
python global 3.13.0
これをしないとMacOSに元々組み込まれているPythonを使ってしまったりするので注意です(ちなみに私のMac miniにはPythonは入っていませんでした)。
ちなみに「global」を「local」にするとその時のディレクトリ以下が指定したバージョンのPythonを使うようになるらしいです。
これで「python –version」で使用しているPythonのバージョンを確認してみます。
python --version
実行結果
Python 3.13.0
とこんな感じで指定したPythonのバージョンになっていたら完了です。
おまけ:パッケージのインストール場所
忘れそうなのでおまけとしてパッケージのインストール場所を確認する方法を記載しておきます。
ターミナルを開いてPythonを起動します。
python
実行結果
Python 3.13.0 (main, Dec 1 2024, 21:37:10) [Clang 16.0.0 (clang-1600.0.26.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
これで対話モードとなりますので、次のコマンドを順々に実行します。
import site
site.getsitepackages()
実行結果
['/Users/username/.pyenv/versions/3.13.0/lib/python3.13/site-packages']
ということで「.pyenv」の中の各バージョンのPythonディレクトリ内にパッケージはインストールされるようです。
次回はOpticalpyという光線解析ライブラリのインストールと光源の設定方法を紹介します。
ではでは今回はこんな感じで。
コメント