PythonのプロジェクトでMakefileを使用すると、ビルドやテストなどの一連の作業を自動化できます。特に、Pythonの仮想環境(venv)を活用すると、プロジェクトごとに独立した環境を作成でき、依存関係の管理が容易になります。
しかし、Makefileを使用する際には、venvをアクティベートする必要があります。これは、新しいシェルを開くたびにvenvをアクティベートする必要があるため、少々面倒に感じるかもしれません。
そこで、Makefile内でvenvをアクティベートする方法を紹介します。通常、Makeはレシピ内の各コマンドを異なるサブシェルで実行しますが、.ONESHELL:
を設定すると、レシピ内のすべてのコマンドを同じサブシェルで実行できます。これにより、venvをアクティベートしてからその中でコマンドを実行することが可能になります。
以下に、venvをアクティベートしてからpip installを実行するMakefileの例を示します。
all: install run
install: venv
. venv/bin/activate
pip install -r requirements.txt
run:
python main.py
venv:
python3 -m venv venv
このMakefileでは、make install
を実行すると、venvがアクティベートされ、その後でrequirements.txt
に記載されたパッケージがインストールされます。
以上のように、Makefileを使用してPythonのvenvを効率的に活用することで、Pythonプロジェクトの管理がより簡単になります。ぜひ試してみてください。