現在、自分のWEBの勉強の中心はフレームワークのDjangoです。このため、Pythonをゴリゴリ書くことになるわけですが、Django及びPythonの仮想環境やパッケージ管理などの環境の作り方が色々とあり混乱しますので、ここで環境構築について整理したことをメモとしてここに記録します。
今まではvenvやpipenvを使って見様見真似で仮想環境やパッケージを管理してきました。今回は新たにPoetryというツールを使って環境の構築を試してみました。以下のQiitaの記事を参考にして、取り入れられそうな部分からひとつずつ導入します。
Pythonそのもののバージョン管理 : pyenv
ひとつのPC上で複数のPythonバージョンを使いたいときにバージョンを切り替える仕組みがpyenvです。Python 3.7, 3.8, 3.9等の別のバージョンのPythonを使い分けることができるようになります。
Mac環境の場合はbrewコマンドでインストール可能です。OSや環境に合わせて環境変数の設定なども必要です。
仮想環境, パッケージ管理 : Poetry
Pythonで使う様々なモジュール(パッケージ)たちも環境によって分けてインストールしたいです。もしシステムにインストールされているPythonのみを使っている状況で、pipコマンドをそのまま使ってパッケージをインストールすると、環境がすべて共通になりパッケージのバージョンも全て共通になってしまいます。そこで例えばDjangoのプロジェクト(ディレクトリ)ごとに仮想的に環境を分離することで、その独立した環境ごとに違ったバージョンのパッケージを使うことが可能になります。
この仮想的な環境を作るためにPoetryを使用します。
Poetryはpyprojcet.tomlというファイルにインストールするパッケージ等の設定を記述して使います。複数人でひとつのプロジェクトを開発する際に、メンバー全員でプロジェクトに使っているPythonやパッケージの環境を揃えたいときにもpyproject.tomlファイルをメンバーと共有することで、このファイルを元に色々なパッケージのバージョンを揃えてメンバーの環境を構築することができます。
個人的にこれまで仮想環境の構築にはpipenvを使ってきまして、Poetryもpipenvも基本的に仮想環境の構築という部分についてはやりたいこと・できることは同じです。今回、後述するツールの設定をPoetryも使うpyprojcet.tomlに記述して一元管理できることに興味がもちまして、Poetryを使ってみることにしました。
既にpipenvを使って作ったDjangoのプロジェクト環境もPoetryに置き換えてみました。
Poetryやpipenv等のツールの特徴については、以下の情報が参考になりました。
フォーマッタ : black
Pythonのコードのスタイルをチェック・自動フォーマットするツールです。例えばスペースの数や1行あたりの文字数といった、コードの見た目を整えるために使用するものです。
今までフォーマッタを使ったことは無くできる限り手動でフォーマットを整えていたのですが、今回新たにフォーマッタを使うことにしました。
Poetryによって作成されたpyproject.tomlファイルに設定を記述できます。
[tool.black]
line-length = 119
exclude = '''
(
.venv
)
'''
line-length = 119の記述は1行あたりの文字数を設定しています。また、excludeの記述でフォーマット対象外のディレクトリを設定しています。
今後も適宜こちらのページを更新していきます。
コメント