[備忘録]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での操作に慣れているのでこちらの方が圧倒的に使いやすい。