今回は、Homebrew・pyenv・Poetry・venvを使って環境を作り、最後にNumPyをインストールしてVS CodeからPythonを実行するところまで進めました。
環境構築の流れを整理すると、次の5ステップです。
- Homebrewをインストール
- Homebrewでpyenvをインストール
- pyenvでPythonをインストールし、そのPython環境でPoetryを使用
- Poetryを使って仮想環境(venv)を作成
- 仮想環境内にNumPyをインストールし、VS Codeから実行
1. Homebrewをインストール
最初に、Macのパッケージ管理ツールであるHomebrewをインストールしました。
Homebrewは、Macで開発に必要なソフトウェアやツールを、ターミナルからインストール・更新・削除できるようにするツールです。
例えば今回使用したpyenvも、Homebrewを使ってインストールできます。
Homebrewのインストールは、ターミナルで次のコマンドを実行します。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
インストールできているか確認するときは、
brew --version
を実行します。
バージョン情報が表示されれば、Homebrewが使用できる状態です。
2. Homebrewでpyenvをインストール
次に、Homebrewを使ってpyenvをインストールしました。
pyenvは、複数のPythonバージョンを管理するためのツールです。
Pythonは、プロジェクトによって「Python 3.8を使いたい」「Python 3.11を使いたい」といったように、必要なバージョンが異なることがあります。
pyenvを使うことで、使用するPythonのバージョンを切り替えられるようになります。
まずHomebrewを更新しました。
brew update
その後、pyenvをインストールします。
brew install pyenv
インストールできているかは、次のコマンドで確認できます。
pyenv --version
次に、使用したいPythonをpyenvからインストールしました。
pyenv install 3.8.18
インストール済みのPythonは、
pyenv versions
で確認できます。
例えば特定のプロジェクトでPython 3.8.18を使用する場合は、プロジェクトのフォルダ内で、
pyenv local 3.8.18
と指定できます。
Mac全体で使用するpyenvのPythonを指定する場合は、
pyenv global 3.8.18
のように設定できます。
現在どのPythonが使用されているか確認するには、
python3 --version
や、
which python3
を使用しました。
特にwhich python3は、どこにあるPythonが実際に使用されているのかを確認するときに便利でした。
3. pyenvで管理しているPython環境でPoetryを使用
次に、Poetryを使えるようにしました。
Poetryは、Pythonプロジェクトで使用するライブラリや仮想環境を管理するためのツールです。
PythonではNumPyやpandasなどの外部ライブラリを使用することが多いですが、すべてMac全体に直接インストールしてしまうと、プロジェクトごとの管理が難しくなります。
Poetryを使うことで、プロジェクトごとに必要なライブラリや、そのバージョンを管理しやすくなります。
Poetryが使用できる状態になっているかは、
poetry --version
で確認しました。
ここで少し分かりにくかったのが、pyenvとPoetryの役割の違いです。
pyenvはPython本体のバージョンを管理するもの、PoetryはPythonプロジェクトのライブラリや仮想環境を管理するものという違いがあります。
4. Poetryを使って仮想環境(venv)を作成
次に、Poetryを使ってプロジェクト専用の仮想環境(venv)を作成しました。
まずPythonのプロジェクトを作成するフォルダへ移動します。
cd プロジェクトのフォルダ
Poetryで新しいプロジェクトを作る場合は、
poetry init
を実行します。
実行すると、プロジェクトの情報や依存関係を管理するためのpyproject.tomlが作成されます。
使用するPythonを指定する場合は、
poetry env use python3
のように指定できます。
仮想環境がどこに作られたか確認したい場合は、
poetry env info
を使用しました。
仮想環境とは、簡単にいうとプロジェクト専用のPython環境です。
例えば、プロジェクトAとプロジェクトBで異なるバージョンのライブラリを使っていても、それぞれを別の環境として管理できます。
Mac本体のPython環境に直接いろいろなライブラリを追加せずに済むため、環境を分けて管理できます。
5. venv内にNumPyをインストール
作成した仮想環境に、PythonのライブラリであるNumPyをインストールしました。
NumPyは、数値計算や配列の処理を効率よく行うためのPythonライブラリです。
データ分析や機械学習などでもよく使用される、Pythonの代表的なライブラリのひとつです。
PoetryでNumPyを追加する場合は、
poetry add numpy
を実行します。
Poetryで追加したライブラリは、今回のプロジェクト用に作られた仮想環境の中にインストールされます。
インストールされているライブラリを確認したい場合は、
poetry show
を使用できます。
VS CodeでvenvをPythonインタプリタとして使用
最後にVS CodeからPythonを実行できるように設定しました。
ここでも重要なのが、どのPythonを使ってコードを実行するかです。
VS CodeではPythonのインタプリタを選択できます。
今回は、Poetryによって作成されたvenv内のPythonをインタプリタとして選択しました。
VS Codeのコマンドパレットを開き、
Python: Select Interpreter
を選択します。
その中から、今回作成したvenvのPythonを選択しました。
これによってVS CodeからPythonを実行したときにも、venv内にインストールしたNumPyなどのライブラリを使用できます。
例えば、
import numpy as np
numbers = np.array([1, 2, 3, 4, 5])
print(numbers)
のようなPythonファイルを作成し、VS Codeから実行してNumPyが使用できることを確認しました。
今回の環境構築の流れ
今回行った内容をあらためて整理すると、
Homebrew
↓
pyenv
↓
Python
↓
Poetry
↓
venv
↓
NumPy
↓
VS Codeで実行
という流れになりました。
それぞれのツールの役割を整理
環境構築をしている途中は、Homebrew・pyenv・Poetry・venvなど、似たような名前が次々に出てきて、「結局どれが何をしているのか」がかなり分かりにくく感じました。
今回使ったツールを簡単に整理すると、次のようになります。
| ツール | 役割 |
|---|---|
| Homebrew | Macに開発ツールをインストール・管理する |
| pyenv | Python本体のバージョンを管理する |
| Poetry | Pythonプロジェクトのライブラリや仮想環境を管理する |
| venv | プロジェクト専用のPython環境 |
| NumPy | 数値計算などを行うためのPythonライブラリ |
| VS Code | Pythonのコードを書いて実行するエディタ |
環境構築で苦戦したこと
実際には、この5ステップだけですんなり環境構築できたわけではありませんでした。
私のMacには、以前よく分からないままインストールしていた開発ツールがいくつも残っていました。
例えば、asdfやmiseなど、現在は使用していないバージョン管理ツールもインストールされていました。
それぞれがPATHなどの環境設定に関係している可能性があるため、「これは今使っているのか」「削除しても問題ないのか」をひとつずつ確認する必要がありました。
インストールするよりも、過去に入れたツールを整理するほうが大変でした。。。
AnacondaのPythonが使われてしまう
さらに苦戦したのが、最近インストールしていたAnacondaでした。
ターミナルで、
which python3
を実行すると、
/opt/anaconda3/bin/python3
のように表示され、pyenvでインストールしたPythonではなくAnaconda側のPythonが使用されていました。
つまり、Python自体はpyenvでインストールできていても、
python3
と入力したときに、必ずしもpyenv側のPythonが実行されるとは限らないということです。
そこで、PATHや.zshrcなどのシェル設定を確認し、pyenvで管理しているPythonが優先して使用されるように整理しました。
現在使っているPythonの場所を確認する、
which python3
Pythonのバージョンを確認する、
python3 --version
という2つのコマンドは、今回の環境構築で何度も使用しました。
環境構築をして分かったこと
Pythonの勉強を始める前は、Homebrew・pyenv・Poetry・Anacondaなどの違いもよく理解できていませんでした。
しかし今回、一つずつ確認していったことで、
- HomebrewはMacのソフトウェアを管理する
- pyenvはPython本体を管理する
- PoetryはPythonプロジェクトの依存関係を管理する
- venvはプロジェクト専用のPython環境を作る
という役割の違いが少しずつ分かってきました。
Pythonを勉強するために始めた環境構築でしたが、結果的にはPythonそのものよりも、MacのPATHやシェル、開発環境がどのように動いているのかを理解するきっかけになりました。
補足:同じコマンドがすべての環境に当てはまるわけではありません
今回紹介した内容は、私のMacで行った環境構築をもとにまとめたものです。
Macの種類やmacOSのバージョン、すでにインストールされているPython、Anaconda、pyenv、asdf、miseなどの状況によって、必要な設定やコマンドは異なる場合があります。
特にPythonが複数インストールされている場合は、いきなり削除するのではなく、
which python3
python3 --version
pyenv versions
などを使って、現在どのPythonが使用されているのかを確認してから環境を変更するのが安全です。