Python環境の整理

Python

現在、自分のWEBの勉強の中心はフレームワークのDjangoです。このため、Pythonをゴリゴリ書くことになるわけですが、Django及びPythonの仮想環境やパッケージ管理などの環境の作り方が色々とあり混乱しますので、ここで環境構築について整理したことをメモとしてここに記録します。

今まではvenvやpipenvを使って見様見真似で仮想環境やパッケージを管理してきました。今回は新たにPoetryというツールを使って環境の構築を試してみました。以下のQiitaの記事を参考にして、取り入れられそうな部分からひとつずつ導入します。

https://qiita.com/edge-m/items/846715217fc3dd481a84

Pythonそのもののバージョン管理 : pyenv

ひとつのPC上で複数のPythonバージョンを使いたいときにバージョンを切り替える仕組みがpyenvです。Python 3.7, 3.8, 3.9等の別のバージョンのPythonを使い分けることができるようになります。

Mac環境の場合はbrewコマンドでインストール可能です。OSや環境に合わせて環境変数の設定なども必要です。

GitHub - pyenv/pyenv: Simple Python version management
Simple Python version management. Contribute to pyenv/pyenv development by creating an account on GitHub.

仮想環境, パッケージ管理 : Poetry

Pythonで使う様々なモジュール(パッケージ)たちも環境によって分けてインストールしたいです。もしシステムにインストールされているPythonのみを使っている状況で、pipコマンドをそのまま使ってパッケージをインストールすると、環境がすべて共通になりパッケージのバージョンも全て共通になってしまいます。そこで例えばDjangoのプロジェクト(ディレクトリ)ごとに仮想的に環境を分離することで、その独立した環境ごとに違ったバージョンのパッケージを使うことが可能になります。

この仮想的な環境を作るためにPoetryを使用します。

GitHub - python-poetry/poetry: Python dependency management and packaging made easy.
Python dependency management and packaging made easy. - GitHub - python-poetry/poetry: Python dependency management and packaging made easy.

Poetryはpyprojcet.tomlというファイルにインストールするパッケージ等の設定を記述して使います。複数人でひとつのプロジェクトを開発する際に、メンバー全員でプロジェクトに使っているPythonやパッケージの環境を揃えたいときにもpyproject.tomlファイルをメンバーと共有することで、このファイルを元に色々なパッケージのバージョンを揃えてメンバーの環境を構築することができます。

個人的にこれまで仮想環境の構築にはpipenvを使ってきまして、Poetryもpipenvも基本的に仮想環境の構築という部分についてはやりたいこと・できることは同じです。今回、後述するツールの設定をPoetryも使うpyprojcet.tomlに記述して一元管理できることに興味がもちまして、Poetryを使ってみることにしました。

既にpipenvを使って作ったDjangoのプロジェクト環境もPoetryに置き換えてみました。

Poetryやpipenv等のツールの特徴については、以下の情報が参考になりました。

フォーマッタ : black

Pythonのコードのスタイルをチェック・自動フォーマットするツールです。例えばスペースの数や1行あたりの文字数といった、コードの見た目を整えるために使用するものです。

GitHub - psf/black: The uncompromising Python code formatter
The uncompromising Python code formatter. Contribute to psf/black development by creating an account on GitHub.

今までフォーマッタを使ったことは無くできる限り手動でフォーマットを整えていたのですが、今回新たにフォーマッタを使うことにしました。

Poetryによって作成されたpyproject.tomlファイルに設定を記述できます。

[tool.black]
line-length = 119
exclude = '''
(
    .venv
)
'''

line-length = 119の記述は1行あたりの文字数を設定しています。また、excludeの記述でフォーマット対象外のディレクトリを設定しています。


今後も適宜こちらのページを更新していきます。

コメント

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