🔖

python 仮想環境

2022/02/19に公開

python 仮想環境

この記事では ubuntu 21.04 をベースに説明します。

python の実行環境

python のスクリプトを実行したい場合、必要なモジュールをインストールしてテストしますが、
どのモジュールをインストールしたか、いちいち手順を記録したりとかしていると面倒だし
手順の記録が漏れていたりすると再現できなかったりします。

最近では Docker を利用して Dockerfile に環境を記載して、docker image を共通で使うことにより環境を統一することができます。

Docker はいろいろめんどくさいところもあるので、 python 限定で仮想環境を作ることができます。これによりホスト環境にあまり影響されずに 仮想環境 を作る機能があります。

以下の記事の内容とほぼ同じですが、自分でやってみた記録です。

http://hydro.iis.u-tokyo.ac.jp/~akira/page/Python/contents/environment/virtualEnvironment.html

準備

python の venv モジュールをインストールします。(python も一緒にインストールされます)

sudo apt install -y python3-venv

仮想環境のインストール + 仮想環境化で実行

test.sh

#!/bin/bash

ENV_NAME=envtest

python3 -m venv $ENV_NAME
source $ENV_NAME/bin/activate
python3 -m pip install pytest pytest-mock
pytest -vv .

解説

python3 -m venv envtest を実行すると、カレントディレクトリ以下に envtest というディレクトリが作成されます。この中にモジュール群がインストールされます。逆にいうとこのフォルダを一括で削除することにより、環境をクリアすることができます。

source envtest/bin/activate を行うことにより、仮想環境のシェルを準備しています。
source コマンドを使うのでシェルスクリプトの先頭で、#!/bin/bash を指定しています。

source envtest/bin/activate を行うと、これ以降は気にせずに モジュールのインストールを行います。

備考

python3 -m venv /tmp/envtest として環境を作成すると /tmp/envtest 以下に環境を作ります。

ホスト環境の確認

test.sh を実行後、以下を実行すると pytest がインストールされていないことを確認できます。

$ python3
Python 3.9.5 (default, Nov 18 2021, 16:00:48)
[GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pytest
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pytest'
>>>

参考リンク

http://hydro.iis.u-tokyo.ac.jp/~akira/page/Python/contents/environment/virtualEnvironment.html

https://docs.python.org/ja/3.9/tutorial/venv.html

Discussion