こんにちは、コウキです。
今回は普段僕が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付属のpip
とvenv
でも、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
これでパッケージがインストールされ、Pipfile
とPipfile.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の環境構築の仕方を紹介しました。
今までの開発環境にしっくり来ていなかった人、特に気にしていなかった人はぜひ参考にしてみてください!
それでは^^
コメント