MacでPython環境を構築してみた|Homebrew・pyenv・Poetryを使った手順まとめ

「Homebrew」「pyenv」「Poetry」「venv」など聞き慣れないツールが次々に登場し、「結局それぞれ何をするものなの?」と混乱してしまう方も多いのではないでしょうか。

私は過去にインストールしていたAnacondaや複数のバージョン管理ツールが影響し、思った以上に環境構築に大苦戦しました。

この記事では、実際に私がMacでPython環境を構築した手順をもとに、Homebrew・pyenv・Poetry・venvの役割や使用したターミナルコマンドを交えながら、初心者にも分かりやすく解説します。

これからPythonを始める方や、環境構築でつまずいている方の参考になれば幸いです。

今回は、Homebrew・pyenv・Poetry・venvを使って環境を作り、最後にNumPyをインストールしてVS CodeからPythonを実行するところまで進めました。

環境構築の流れを整理すると、次の5ステップです。

  1. Homebrewをインストール
  2. Homebrewでpyenvをインストール
  3. pyenvでPythonをインストールし、そのPython環境でPoetryを使用
  4. Poetryを使って仮想環境(venv)を作成
  5. 仮想環境内に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が使用されているのかを確認してから環境を変更するのが安全です。