python 仮想環境
python 仮想環境
この記事では ubuntu 21.04 をベースに説明します。
python の実行環境
python のスクリプトを実行したい場合、必要なモジュールをインストールしてテストしますが、
どのモジュールをインストールしたか、いちいち手順を記録したりとかしていると面倒だし
手順の記録が漏れていたりすると再現できなかったりします。
最近では Docker を利用して Dockerfile に環境を記載して、docker image を共通で使うことにより環境を統一することができます。
Docker はいろいろめんどくさいところもあるので、 python 限定で仮想環境を作ることができます。これによりホスト環境にあまり影響されずに 仮想環境 を作る機能があります。
以下の記事の内容とほぼ同じですが、自分でやってみた記録です。
準備
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'
>>>
参考リンク
Discussion