サマリ
背景
今年の中盤に私物MacBookProを買い替えたのだが、環境構築系は0から綺麗に作ろーかなー、と思いはや半年。いかんこのままでは、と一念発起した。
また本Blogで長期に渡りアクセスを稼いでいるのが、Python入門したての頃に書いたPython3 on mac でpipをターミナルで打っても実行されないという記事で、それから何度もPython環境を構築するようになったので、ここらで自分なりにしっくりするPython環境を作っておきたいと思った。
というわけで本記事はその記録である。採用パターンと、ついでに不採用パターンついても記載しておこう。
採用パターンとモチベーション
結論から書くと、以下の組み合わせを採用した。
- homebrewからpipenvをインストール
- この時点でPython3.9もインストールされてPATHも通る
- homebrewからpyenvをインストール
- あとは開発する単位でpipenvのプロジェクトを切り、そこでpythonのバージョンを指定する
- pyenvが導入されていることで必要なバージョンが適宜pyenv経由で導入される
筆者が上記のパターンを採用したモチベーションとメリットについて記載する。
- homebrewさえ入れてしまえば簡単に終わる
- 首根っこをhomebrewで管理できる(いざとなれば
brew uninstall
などお掃除や管理が楽) - 闇雲な
pip install
を避けてpipenvの利用を常に意識することで、利用パッケージを意識した開発ができる - PATHの追加的な編集作業がいらない
- PATHの概念/追加の方法自体は理解しておくべきだが、意識しづらい所に変更した設定値を残すことになるのが嫌。
言うまでもなくかもしれないが、Pythonはこの手のやり方が色々あって面倒くさいことこの上なく(後述)、検討したけど採用しなかったパターンについての考察は最後に記載するとして、手順についてざっと記載する。
手順
1. homebrewのインストール
% brew search python3 ==> Formulae boost-python3 python@3.7 python@3.8 python@3.9
2. pipenv(+python3.9)とpyenvのインストール
brew install pipenv
にてインストール。- この時点でPython3.9がまとめてインストールされる。
- 続いて
pyenv
を導入して完了。
% brew install pipenv (中略) % brew install pyenv
3. 動作確認
% which python3 /usr/local/bin/python3
- 環境構築時は、任意のディレクトリ上で
pipenv --python 3.6
等と入力することで、該当の環境内で指定のPythonを有効にした仮想環境で開発ができる。- 既に存在しているPythonバージョンがあればそちらを、なければ適宜pyenvを通じたインストールが走る。
- 以降は
pipenv install numpy
等でパッケージを入れたり、適宜作業する。 - 環境が不要になった場合は
pipenv --rm
で仮想環境を削除できる。 - その他詳しくはほか記事にて
内部的にはpythonの
venv
の仕組みを使っているが、pipenvを通すことでパッケージ管理に集中できる。- 加えてこの手順だと
pyenv
を過度に意識しなくてもよくなる(と思う)- pyenv自体に導入されているバージョンは
pyenv versions
で確認できる
- pyenv自体に導入されているバージョンは
- 加えてこの手順だと
ここまでの手順で導入していない3.6を指定した例。
% pipenv --python 3.6 Warning: Python 3.6 was not found on your system... Would you like us to install CPython 3.6.12 with Pyenv? [Y/n]: Y Installing CPython 3.6.12 with /usr/local/bin/pyenv (this may take a few minutes)... ✔ Success! (中略) Installed Python-3.6.12 to /Users/user/.pyenv/versions/3.6.12 Creating a virtualenv for this project... Pipfile: /Users/user/myRepos/python/py3.8-test/Pipfile (中略) ✔ Successfully created virtual environment! Virtualenv location: /Users/user/.local/share/virtualenvs/py3.8-test-XSD53VLK
以上
不採用パターン一覧とその理由
何パターンか採用を考えたけど見送ったもの、昔使っていたパターンについても少し記載する。
ふつうにMac OS標準のPython3.7を利用し続ける。
- 入門者は始めるのが大事なのでこれで良いと思うが、
pip install
を何度も打つようになったらpipenv
等の仕組みに頼りたい - というか今回動かすまでMac OSのデフォルトPython環境に3が増えてたの知らなかった…(Catellina以降なのね)。
Anacondaを使う
- 迷いどころ。実行の早いパッケージが有ったり、環境によってはビルド済のパッケージが導入できて大幅な工数削減になる。
- 採用してもいいが、
pip
を併用するとパッケージが動かなくなるケースが有るので、入門者にも優しいようで微妙に落とし穴があるのが好きじゃない。 - とはいいつつも、Win環境など一定の条件下だと筆者もminicondaを使う。
今回紹介した手順でpyenvを使わずに、homebrewからPython3.8~3.9をインストールする
- 実は最初やろうとしたが、見送った。
- 3.7,3.8,3.9が揃っておりこれでも良いかと思ったが、この方法だとpipenvから他のバージョンのPythonを指定するのがかなり面倒(PATHを通せば可能だがそうなると結局管理が面倒)。
その他env系
- 一通り見たけどpipenvが今の所一番自分には肌に合ってる。
- というか**env多すぎませんかねPython界隈……
- Win環境の場合は
WSL
とminiconda
で構築するようにしているが、この辺は気が向いたら別途整理予定。
以上。