Pythonのおすすめ環境構築[anyenv + pyenv + pipenv]

python

こんにちは、コウキです。

今回は普段僕がpythonの環境構築で使っているツールを紹介します。
Pythonをこれから勉強したいっていう人にはあまり重要ではないかもしれないですが、これから本格的に開発していく!という人は環境構築に悩まされることもあるのではないでしょうか?
dockerでpythonの開発環境を構築する方法もありますが、今回紹介する方法のほうが開発しやすいので、僕はこちらをおすすめします。
ただし、開発用のDBとか、フロント開発用のバックエンド環境をdockerで用意するととても便利なので、dockerも使えるようになっておくと良いと思います!

環境

  • Mac (Apple Silicon)

今回使うツール

  • anyenv
  • pyenv
  • pipenv

anyenvの使い方

anyenvはpyenvやnodenvなどをインストールするためのツールです。直接pyenvなどをインストールすることもできますが、anyenvを使えばこれらのツールをまとめて管理することができ、個別にパスを通す作業も必要なくなります。

anyenvのインストール

まずはanyenvをbrewでインストールします。
anyenvの初期化や.zshrcへの追記も行っておきます。

brew install anyenv
echo 'eval "$(anyenv init -)"' >> ~/.zshrc
anyenv init
exec $SHELL -l
anyenv install --init

anyenvにupdateプラグインを追加

anyenvで入れたツールをアップデートできるようにプラグインを入れます。

mkdir -p ~/.anyenv/plugins
git clone https://github.com/znz/anyenv-update.git ~/.anyenv/plugins/anyenv-update

以下のコマンドでanyenvで入れたツールをアップデートできるようになります。

anyenv update

pyenvの使い方

pyenvは複数のバージョンのpythonをインストールして、簡単に切り替える事ができるようにするツールです。

プロジェクトによってpythonのバージョンが異なることは多いので必須のツールです。

pyenvのインストール

pyenvはanyenvを使ってインストールします。

anyenv install pyenv

これでpyenvが使えるようになりました。

pyenvを使ってpythonをインストール

pyenvでインストールできるpythonのバージョンを確認します。

pyenv install -l

このコマンドだと大量のバージョンが表示されるのでgrepを使うと便利です。
これは3.10のみを表示する場合です。

pyenv install -l | grep "\s3.10"

もしお目当てのバージョンがpyenvにない場合はpyenv自体をアップデートする必要があります。
その時は上で紹介したanyenvのupdateコマンドを使いましょう。

anyenv update

バージョンが確認できたら次はpythonをインストールします。

pyenv install 3.10.1

これでpython3.10.1がインストールされました。

インストールしたpythonを使用する

次にインストールしたpythonを使う設定をします。
グローバルに設定する方法とローカルに設定する方法があります。
グローバルに設定するには以下のコマンドを実行します。

pyenv global 3.10.1

これでどこから実行してもグローバルに設定したpythonが使用されます。
ただし、ローカルの設定がある場合はそちらが優先されます。

ローカルに設定する場合は以下のようにします。

pyenv local 3.10.1

.python-versionというファイルができ、このディレクトリ以下ではここに書かれたバージョンのpythonが使用されます。
プロジェクトで使用する場合はローカルで設定することをおすすめします。

pipenvの使い方

pipenvはpythonのパッケージ管理と仮想環境の作成ができるツールです。
プロジェクトごとに使用するパッケージは異なるのでこのようなツールを使います。

python付属のpipvenvでも、requirements.txtを作成してパッケージ管理ができますが、結構面倒なのでpipenvのようなツールを使うことをおすすめします。

ここでは紹介しませんが、最近はpoetryというツールも人気なので気になったら調べてみてください。

pipenvのインストール

brewを使ってpipenvをインストールします。

brew install pipenv

ついでにpipenvの仮想環境が作られる場所をプロジェクトルートに変更します。

echo 'export PIPENV_VENV_IN_PROJECT=true' >> ~/.zshrc

pipenvの初期設定

pipenvで使うpythonのバージョンを指定します。

pipenv --python 3.10

pipenvはpyenvでインストールしているpythonを使用します。インストールされていない場合は自動でインストールします。
ちなみにpyenv localでpythonのバージョンを指定する方法を紹介しましたが、pipenvを使う場合はやらなくても大丈夫です。
このコマンドを実行するとPipfile.venvディレクトリができているはずです。
.venvは仮想環境で、Pipfileにはインストールしたパッケージ等が記載されていきます。
pipenvの仮想環境に入るには次のコマンドを実行します。

pipenv shell

仮想環境から抜けるには次のコマンドを実行します。

exit

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

試しにdjangoをインストールしてみます。

pipenv install django

これでパッケージがインストールされ、PipfilePipfile.lockにパッケージの情報が追加されます。
Pipfile.lockには実際にインストールされたパッケージのバージョンが記載されていて、これを使って同じ環境を再現することができるようになっています。
アンインストールは次のコマンドでできます。

pipenv uninstall django

pipenvでは--devオプションで開発用のパッケージを分けることもできます。

pipenv install --dev black

本番環境で使わないパッケージはこっちを使います。

pipenvでPipfileに記載されたパッケージをインストールする

Pipfile.lockを使って全く同じバージョンのパッケージをインストールするにはsyncを使います。
開発メンバーには基本的にこっちを使ってもらうと良いと思います。

pipenv sync
pipenv sync --dev

パッケージを最新版に更新したいときはinstallを使います。こっちはそんなに頻繁に使うことはないです。

pipenv install
pipenv install --dev

本番環境などでシステムのpythonにパッケージをインストールしたい場合は--systemオプションを使います。

pipenv install --system
pipenv sync --system

スクリプトを登録する

pipenvではスクリプトを登録することができます。

[scripts]
dev = "python manage.py runserver"
black = "black ."

呼び出すときはpipenv run ~です。

pipenv run dev
pipenv run black

この例ではあんまり短かくなってない気がしますが、開発で使うコマンドはすべてスクリプトに登録しておくと良いと思います。
登録しておけば、開発中に使うコマンドがひと目でわかるし、ちょっとオプション変更したいときとかも同じコマンドで実行できて、特に複数人で開発するときは便利です。

おわりに

今回はanyenv + pyenv + pipenvを使ってpythonの環境構築の仕方を紹介しました。
今までの開発環境にしっくり来ていなかった人、特に気にしていなかった人はぜひ参考にしてみてください!
それでは^^

コメント

タイトルとURLをコピーしました