31
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M1 MacでpyenvとpoetryをインストールしてPython3.10.10環境を構築

Last updated at Posted at 2023-03-13

みなさんこんにちは!

M1 MacにはデフォルトでPythonがインストールされていますが、Python本体のバージョンやパッケージを案件個別に管理したいケースが多く、デフォルトのPythonを利用した開発を行う人はあんまりいないと思います。

Pythonのパッケージ管理ツールとしてはPipenvとPoetryの2強だと思いますが、今回は最近勢いのあるPoetryでM1 MacのPython実行環境を構築する方法を紹介していきます。

それに付随して、Python自体のバージョン管理ツールとしてPyenvを併用していきます。

homebrewのインストール

まずはPyenvをインストールしていきますが、最初にhomebrewをインストールする必要があります。

ターミナルを開き、以下のコマンドを実行するとインストールできます。

参考: https://brew.sh/

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

インストールされたかどうかは以下のコマンドで確認できます。

% brew --version
Homebrew 4.0.5
Homebrew/homebrew-core (git revision 92a61f8a21a; last commit 2023-02-17)
Homebrew/homebrew-cask (git revision 2ae6e86efe; last commit 2023-02-16)

既にダウンロードされていた方はアップデートすることをお勧めします。

brew update && brew upgrade

Pyenvのインストール

homebrewがインストールされていれば以下のコマンドでインストール可能です。

参考: https://github.com/pyenv/pyenv

brew install pyenv

インストールが完了した後はPathを通す必要があるので以下のコマンドを実行してください。
(M1のデフォルトのshellはzshなので、それを前提にしていますが、bashなどを利用している方は適宜読み替えてください。)

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

以下のようにバージョンが表示されればインストール完了です。

% pyenv --version
pyenv 2.3.14

バージョンが古いときは以下のようにしてPyenv自体をアップデートできます。

brew update && brew upgrade pyenv

PyenvでPythonをインストール

インストールするpythonを確認し、インストールします。

pyenv install --list
pyenv install 3.10.10

使用するバージョンを決定します。
globalはマシン全体の設定で、localはそのディレクトリ(プロジェクト)内固有の設定になります。
とりあえずどっちも設定しておきましょう。

pyenv versions
pyenv global 3.10.10
pyenv local 3.10.10

pyenv localの設定を行うとフォルダ内に、.python-versionというファイルができますが、これによってディレクトリ内で利用するPythonのバージョンを判定していますので、削除しないようにしてください。

設定がうまくいっていればpythonのバージョンが指定したものに変更されているのが確認できると思います。

% python --version
Python 3.10.10

Poetryをインストールする

参考: https://python-poetry.org/docs/

以下のようにインストールを行います。

curl -sSL https://install.python-poetry.org | python -
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

正常にインストールされていれば以下のような表示がされます。

% poetry --version
Poetry (version 1.3.2)

Poetry自体は以下のコマンドでアップデートできます。

% poetry self update
Updating Poetry version ...

Using version ^1.4.0 for poetry
...

% poetry --version  
Poetry (version 1.4.0)

削除したい場合は以下のコマンドで削除できます。

curl -sSL https://install.python-poetry.org | python - --uninstall

Poetryを利用する目的として、「プロジェクトごとにパッケージを管理したい」という理由が大きいと思いますが、以下のコマンドを実行kすると、ディレクトリの中に.venvフォルダ、つまり仮想環境を作成できるので管理が楽になります。

poetry config virtualenvs.in-project true

プロジェクトを作成する

必要なツールが揃ったので、Poetryでプロジェクトを作成してみましょう。

% poetry new poetry-demo
...

% ls -al .
total 8
drwxr-xr-x  6 hogehoge  staff   192B  3 13 18:02 poetry-demo/

poetry-demoディレクトリが生成されているのを確認できると思います。
次にディレクトリに入って仮想環境を作成し、有効化してみましょう。

% cd poetry-demo/    
% poetry install
% poetry shell
% python -V
Python 3.9.16

おっと、Pythonのバージョンが3.9系になってしまっていますね。

pyproject.tomlというファイルを覗くと以下のようになっていました。

[tool.poetry]
name = "poetry-demo"
version = "0.1.0"
description = ""
authors = [""]
readme = "README.md"
packages = [{include = "poetry_demo"}]

[tool.poetry.dependencies]
python = "^3.9"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

以下の箇所に注目すると、Pythonのバージョンが3.9以上であれば何でもOK!というふうに設定ファイルが定義されていることがわかります。

[tool.poetry.dependencies]
python = "^3.9"

これは以下のコマンドで対応可能です。
仮想環境の中で以下を実行してください。

% poetry env use 3.10.10 
% python -V
Python 3.10.10

求めているバージョンになりましたね!

ただし、このままでは他の人がプロジェクトを開始するときに同じく3.9系が利用されてしまう可能性があるので、pyproject.tomlの記述は以下のように変更しておくことをお勧めします。

[tool.poetry.dependencies]
python = "^3.10"

また、poetry.lockも更新しておく必要があるため、実際の運用をする際には.venvディレクトリを削除して再構築し直すのが望ましいでしょう。

% rm -rf .venv/
% pyenv local 3.10.10
% poetry env use 3.10.10
% poetry install

終わりに

以上が、M1 Macでpyenvとpoetryを使ってPythonの環境を構築する手順です。これで、複数のPythonバージョンを使い分けたり、プロジェクトごとに環境を分離したりすることができます。

31
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?