見出し画像

【MacOS】PyenvとvenvでPython環境を構築する

MacBookAir M1からM3に乗り換えました。

私はPythonを始めたと同時にM1 Macを買い、
Python本体やらパッケージやらを訳も分からず適当にインストールしていたので、M1 MacのPython環境はかなりゴチャゴチャしていました。

M3では、こうした反省を踏まえ、
pyenvを使ってPython本体のバージョン管理もやりながら、一から環境構築していくことにしました。

Pythonを独学ではじめた方は、
かなりの確率の高さで、ローカルのPython環境がゴチャゴチャになっているのではないでしょうか?

この記事では、自分と同じような境遇の方の方に向けて
pyenvとvenvを使ったPython環境の構築の方法について紹介していきます。

なお、pyenvのインストールではHomebrewを使います。
Homebrewのインストールが未了の方はこちらの記事を参照して、インストールしておいてください。




そもそもpyenvとは?


venvと名前が似ているのでややこしいですが、pyenv自体はPythonのバージョンを管理してくれるツールです。
主に以下のような特徴があります。

複数バージョンのPythonの管理:
pyenvを使うと、1台のコンピューター内で複数のPythonバージョンをインストールし、それらのバージョンを切り替えて使用することができます。

環境の隔離:
pyenvを使用すると、システム全体で影響を及ぼすことなく、Pythonのバージョンや環境を管理できます。これにより、システムのPythonに影響を与えることなく、プロジェクトごとに適切なPythonバージョンを選択できます。

シンプルなインストールと使用: pyenv自体のインストールは比較的簡単であり、Pythonのバージョンを切り替える際もシンプルなコマンドで行えます。

異なるバージョンのPythonを管理し、それらを効果的に切り替えて使用するための便利なツールとして利用されています。



pyenvでPythonのバージョン管理をできるようにする


ここから実装です。

Homebrewコマンドでpyenvをインストールする

ターミナルを開いて、brewコマンドを以下を実行します。

brew install pyenv


シェル環境のセットアップ

まずは、以下のコマンドで、ご自身のシェルの種類を確認してください。

echo $SHELL 

Appleシリコン(Mシリーズ)のMacの場合、以下のように、/bin/zshというシェル環境になっていますので、それを前提に進めます。

(出力結果)
/bin/zsh

インテル製のMacの場合、/bin/bashとなります。この場合、以下とは手続きが異なりますのでご注意ください。

続きです。以下のコードを一行ずつ実行していきます。
いわゆるpathを通すコードです。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

最後に以下のコードで確定します。

exec "$SHELL"


pyenvからPythonをインストールする

ここからはpyenvコマンドを使います。
まずは、以下のコマンドを入力します。

pyenv install --list

すると、pyenvでインストールできるバージョンが出力されます。
最初の数字だけのものがPythonのバージョンです。

(出力結果)
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.0
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
(略)
  3.12.8
  3.13.0
  3.13.0t
  3.13-dev
  3.13t-dev
  3.13.1
  3.13.1t
  3.14.0a3
  3.14.0a3t
  3.14-dev
  3.14t-dev
(略)
  stackless-3.4-dev
  stackless-3.4.2
  stackless-3.4.7
  stackless-3.5.4
  stackless-3.7.5

ここでは、Pythonの3.12.8をインストールしたいと思います。
以下のコマンドを入力します。

pyenv install 3.12.8

もし、 以下のように、「No module named '_lzma'」のエラーが出た場合は、次のステップ(一旦、3.12.8をアンインストール)に移ってください。

エラーが出なければ、「pyenvコマンドでバージョンを確認する」まで進んでください。

(出力結果)
ModuleNotFoundError: No module named '_lzma'
WARNING: The Python lzma extension was not compiled. Missing the lzma lib?

一旦、3.12.8をアンインストールする

pyenv uninstall 3.12.8

さきほどのエラーメッセージは「liblzma-devというパッケージがない」という内容ですが、Homebrew がインストールされている場合、liblzma-dev の代わりに xz パッケージをインストールします。

xzパッケージをインストールする

brewコマンドを使って、次を実行してください:

brew install xz

再び、pyenvコマンドを使って、Python3.12.8をインストールする

pyenv install 3.12.8

今度はエラーなくインストールが完了するはずです。

(出力結果)
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.12.8.tar.xz...
-> https://www.python.org/ftp/python/3.12.8/Python-3.12.8.tar.xz
Installing Python-3.12.8...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.12.8 to /Users/username/.pyenv/versions/3.12.8


pyenvコマンドでバージョンを確認する

以下のコマンドで、バージョンを確認します。

pyenv versions

以下のような出力がされていれば、とりあえず成功です。

(出力結果)
* system (set by /Users/username/.pyenv/version)
  3.12.8

ただ、この時点では、
まだ、バージョン 3.12.8 を使用することはできません。
Python3.12.8を使用できるようには、globalコマンドまたはlocalコマンドで指定する必要があります。

globalコマンドによる指定

pyenv global 3.12.8
  • pyenv global コマンドは、システム全体でデフォルトの Python バージョンを設定するために使用します。

  • この設定は、ユーザーがログインするたびに有効になります。

  • 例えば、pyenv global 3.12.8 を実行すると、システム全体で Python バージョン 3.12.8 をデフォルトとして使用するように設定されます。

localコマンドによる指定

pyenv local 3.12.8
  • pyenv local コマンドは、特定のディレクトリ(プロジェクトディレクトリなど)における Python バージョンを設定するために使用します。

  • プロジェクトごとに異なる Python バージョンを使用したい場合に便利です。

  • 例えば、あるプロジェクトディレクトリで pyenv local 3.12.8 を実行すると、そのディレクトリ内でのみ Python バージョン 3.12.8 を使用するように設定されます。

この記事では、システム全体ではなく、venvという仮想環境でPythonを使えるようにしますので、localコマンドを使っていきます。

ちなみに、pyenv global 3.12.8を実行した場合、
pyenv versionsを実行すると、以下のようにversionに※がつきます。
こうなってようやく使える状態になります。

  system
* 3.12.8 (set by /Users/username/.pyenv/version)

元に戻す時は以下のコードです。(システムのデフォルトに戻す場合)

pyenv global system



venvでPython仮想環境を構築する


ここからは難しくありません。

仮想環境用のディレクトリをデスクトップに作成

デスクトップに、python_projectというディレクトリを作成します。

cd  /Users/username/Desktop
mkdir python_project


pyenvのlocalコマンドでPythonバージョンを設定

cdコマンドで、仮想環境用のディレクトリに移動します。

cd  python_project

localコマンドを使って、pyenvにインストールした3.12.8を設定します。

pyenv local 3.12.8

これによって、この仮想環境では、Python3.12.8が使えるようになります。
pyenv versionsのコマンドを実行すると、以下のように出力されます。
3.12.8に※がついていますね。


(出力結果)  
system
* 3.12.8 (set by /Users/username/Desktop/python_project/.python-version)


ls -a コマンドでpython_projectディレクトリの中を見てみると、.python-versionという隠しファイルが作成されています。

(出力結果) 
ls -a
.		..		.python-version


venv環境の作成

以下のコードで.venvという名前の仮想環境を作ります。

python -m venv .venv

ls -a コマンドでpython_projectディレクトリの中を見てみると、
.venvが作成されています。

ls -a
.		..		.python-version	.venv


仮想環境の起動

以下のコードで仮想環境を使えるようになります。

source  .venv/bin/activate


最後までお読みいただきありがとうございます!

いいなと思ったら応援しよう!

Non
よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!