[備忘録]pythonの開発環境を変えた話

 これまではHomebrewでバージョン管理をしつつ、pyenv+condaで開発という輻輳した開発環境であったため、バージョン管理をpyenv一括で行うことにしたので、その時の備忘録です。

筆者の環境

OS: macOS Mojave 10.14.6
エディタ: VSCode 1.74.3
Homebrew 3.6.18

開発環境のイメージ

バージョン管理: pyenv 
パッケージ管理: conda or venv(基本的にはcondaを使用しつつ、実行ファイルなどを作りたい場合にはvenvも使用)
仮想環境以外ではpython3のパスはHomebrewで入れた最新のものを優先。

1. pythonの導入と環境変数の設定 

brew経由で導入していたpythonの削除

これまではHomebrewで導入した3.9系、3.10系、3.11系と使用していたが、brewで扱うものは3.11(というか常に最新版のもの)に変更。合わせてこれまでpython3のパスはpython@3.10にしていたものを、3.11系に変更する。brewでpython@3.11をインストールしたのちに、以下でパスの情報を確認。

$ brew info python@3.11

出力されるもののうち以下の部分に注目。

Unversioned and major-versioned symlinks `python`, `python3`, `python-config`, `python3-config`, `pip`, `pip3`, etc. pointing to
`python3.11`, `python3.11-config`, `pip3.11` etc., respectively, have been installed into
  /usr/local/opt/python@3.11/libexec/bin

python3のパスは、/usr/local/opt/python@3.11/libexec/binというディレクトリに格納されたため、こちらを指定し直す。

環境変数python3のパスを通す

以下を.bashrcに追記。rcはrun commandの略らしい。

export PATH="/usr/local/opt/python@3.11/libexec/bin:$PATH"

この後は再起動をするか、

$ source .bashrc

を実行。これで環境変数の設定は完了。

[追記]

brew経由でインストールするとtkinterが付随しないらしい。使用する場合はpython-tkを別途インストールするか、tcl-tkをインストールしておく。pyenvでインストールしたpythonでは問題なく使用できた。

2. pyenvを使用しての仮想環境の構築

前述のようにバージョン管理は全てpyenvを通して行うことにした。brewでpyenvをインストールし、pyenvでとりあえず3.10系をインストール。

$ pyenv install 3.10.1

pyenvの初期設定

ここまではうまくいったが、環境の切り替えで少しつまづいた。

pyenv: shell integration not enabled. run `pyenv init' for instructions.

とのことなので「pyenv init」を実行。以下の内容を~/.bashrcと~/.bash_profileに書けとのエラーが出た。しかし指示通り追記すると、python3の環境変数が.pyenvの方を優先してしまうため、パスの通し方を変更。

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

----#変更----

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

環境変数の時と同じように「source」を実行することで以下のコマンドが通り無事にバージョンの切り替えができた。

$ pyenv local 3.10.1

3. condaのインストール

pyenvを使用して必要なconda環境をインストールする。詳細の説明は省略。

$ pyenv install anaconda3-2022.05

4. venvを使用してのパッケージ管理

venvはpython3系には標準でインストールされているパッケージ管理のできるバンドルである。

venvを使用するバージョンのpythonをインストール

今回は3.10.1を使用する。

$ pyenv install 3.10.1

念の為導入したpythonのバージョンを確認。

$ pyenv versions
* system (set by /path/to/.pyenv/version)
  3.10.1
  anaconda3-2022.05

systemになっているので、以下のコマンドで3.10.1に変更。

$ pyenv local 3.10.1

仮想環境の初期化

$ python3 -m venv .env

 以上のコマンドで.envという名前の仮想環境を初期化できる。環境の設定やその環境にインストールしたパッケージなどは./.env配下に格納されていく。仮想環境は以下のコマンドで有効化する。

$ source .env/bin/activate

 仮想環境が有効になると(.env)のようにコンソールに表示される。有効にしたのちにpipでパッケージを適宜入れていき、仮想環境ごとにパッケージの管理ができる。

 仮想環境を抜けたい場合は、

$ deactivate

のみで無効にできる。

[追記]

 VSCodeの拡張機能を使用していると、インタープリタをプロジェクトディレクトリごとだけでなく、ワークスペースごとにも変更できる。筆者はGUIでの操作に慣れているのでこちらの方が圧倒的に使いやすい。

参考


この記事が気に入ったらサポートをしてみませんか?