MacでVSCode+pyenv+venv+pipを使い、Pythonの開発環境を構築する
複数のプロジェクトでPython開発を行う際、プロジェクト毎にPythonのバージョンや依存パッケージなどを使いわける必要があるかと思います。
本記事ではMacで、pyenvとvenvを用いて作成した仮想環境にpipでパッケージをインストールし、Visual Studio Codeで扱うための設定手順について紹介します。
Windowsで同じことをやりたい場合はこちら
環境構築
Homebrewをインストール
まずは、関連するパッケージをインストールする環境を整えるため、Homebrewをインストールします。
上記ページに記載がある、インストール用のコマンドを実行します。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
実行の過程でパスワードなどの入力を求められますが、画面の指示に従って都度入力します。
一通りインストールが終わると、以下のような形でパスを通すためのコマンドが数行ほど表示されます。
==> Next steps:
echoやevalなどのコマンドが表示されていると思いますので、これらのコマンドを忘れずに実行しましょう。
xzをインストール
ModuleNotFoundError: No module named '_lzma'
WARNING: The Python lzma extension was not compiled. Missing the lzma lib?
pyenvでpython 3.11あたりをインストールすると、上記のようなエラーが発生するので、あらかじめHomebrewからxzをインストールしておきます。
brew install xz
pyenvをインストール
Pythonのバージョン管理ツールであるpyenvを、Homebrewを使ってインストールします。
brew install pyenv
インストールができたら、pyenvのパスを通します。
zshの場合は以下のコマンドを使用します。それ以外のシェルを使用している場合は、上記リンクから各環境に合わせたコマンドを実行します。
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
パスを通し終えたら、sourceコマンドで変更を反映します。
source ~/.zshrc
pyenvでpythonをバージョン指定してインストール
pyenvで提供されているバージョンの一覧を取得します。
pyenv install --list
上記コマンドで示されたリストから、バージョンを指定してインストールします。
pyenv install 3.9.16
pyenv install 3.11.1
また、インストールされているバージョンを削除したい場合はuninstallコマンドが使えます。
pyenv uninstall 3.11.1
Visual Studio Codeをインストール
Visual Studio Codeをインストールします。
M1やM2を搭載したSilicon Macの場合、Apple Silicon版をダウンロードします。
Visual Studio CodeでPython拡張機能をインストール
Visual Studio CodeでPythonの開発を行うには、以下の拡張機能をVisual Studio Codeに導入する必要があります。
VSCode内の拡張機能検索機能を使うか、上記リンクのInstallボタンからインストールを行います。
仮想環境の作成
作業ディレクトリへ移動
.pyファイルが格納されている作業ディレクトリをシェルで開いて下さい。
Visual Studio Codeで扱う際に、何かしら.pyファイルが存在する必要があるため、新規でプロジェクトを作成する場合は、空のファイルで良いので.pyファイルを作成しておきましょう。
pyenvでPythonのバージョン指定
pyenvでインストール済みのPythonのバージョン一覧を取得します
pyenv versions
インストール済みのバージョンが確認できたら、その中からpyenvを使って当該プロジェクトで使用するPythonバージョンを指定します。
pyenv local 3.9.16
すると、.python-versionというファイルが作成され、このディレクトリでpython3コマンドを実行した場合、今回指定したバージョンのPythonでコマンドが実行されます。
venvで仮想環境を作成
念のため--versionで、pyenv localで指定したPythonのバージョンが反映されているか確認しておきます。
python3 --version
大丈夫そうであれば、venvで仮想環境を作成します。
今回は慣例に従い仮想環境の名前は.venvとしますが、任意の名前で作成することが可能です。
python3 -m venv .venv
これで、作業ディレクトリの.venvというディレクトリ以下に仮想環境が作成されました。
仮想環境にパッケージをインストール
作成した.venvにpipでパッケージをインストールします。
まずは、venvで作成した仮想環境を起動します。
source .venv/bin/activate
仮想環境が起動したら、その後実行するpython3コマンドの影響範囲は、仮想環境内のみに限定されます。
仮想環境のpipをアップデートします。
python3 -m pip install --upgrade pip
次に、パッケージをインストールします。
今回の例では、scikit-learnをインストールしてみます。
pip install scikit-learn
一通りパッケージのインストールが完了したら、deactivateコマンドで仮想環境を閉じます。
deactivate
Visual Studio Codeで開く
作業ディレクトリを、Visual Studio Codeへドラッグ&ドロップするなどして開きます。
エクスプローラービューに作業ディレクトリ以下のファイル一覧が表示されるので、適当な.pyファイルをクリックします。
VSCode下部のステータスバーの表示がPython専用のものに置き換わるので、ここに'.venv': venvと書かれたインタープリターが表示されていることを確認します。

もし、先ほどvenvで作成した環境ではないものが表示されている場合、インタープリター名の文字をクリックすると、インタープリターの選択画面が開きます。

ここで'.venv': venvと書かれたインタープリターを選択すれば、ステータスバーの表示が切り替わり、venvで作成した仮想環境でVisual Studio Codeを用いた開発が可能になります。
Discussion