【初心者向け】Pythonの仮想環境venvで開発をすすめる方法を紹介!

はじめに

前回、Ubuntu上にPythonの実行環境をインストールしました。その際に、Python を開発する際はプロジェクトごとに仮想環境を作成するとしてvenvを選択しました。
前回の記事はこちら
関連記事

はじめに Pythonの開発現場ではDockerなどの仮想環境を用いることが多いと思いますが、実際にwebサービスなどの運用を始める際はPythonのインストール、環境構築が必要になってくる場合もあります。 今回は[…]

今回は仮想環境のvenvを使ってPythonのプログラムコードを実行する方法についてまとめます。
動作環境

 Windows10

 Docker Desktop

 Ubuntu 22.10

 Python 3.11.0

Dockerについて

今回も前回に引き続き、Dockerのコンテナ上にUbuntu 22.10を作成して、そこにPythonをインストールしていきます。

インストール先は、実機のUbuntuでもWSLでも同じ手順となります。

Dockerのインストール方法は以下の記事で紹介しています。
関連記事

はじめに プログラミングを行う際に実行環境を構築する必要がありますが、普段利用しているローカルPCに直接インストールしてしまっては、トライアンドエラーを繰り返すうちに不要なアプリケーションが積み重なり動作が不安定にな[…]

また、DockerはWindows TerminalのPowerShellで行います。
こちらの記事でWindows Terminalのインストール方法も紹介していますので良ければ参照してください。
関連記事

はじめに Windows環境でLinuxのコマンドが利用できるWSL2についてインストールおよび利用方法を説明します。 Linuxコマンドが使えるようになると、様々なプログラミング言語や開発に利用できますので非常に[…]

Python仮想環境(venv)の構築

まず、Pythonの仮想環境を構築するうえで、仮想環境のディレクトリ構成をどうするか考えましょう。

プロジェクトや機能単位で仮想環境を作成することが主だと思いますので、今回は以下のように作成します。

home/
`-- username/
    `-- py_venvs/
        |-- py1/
        |   `-- .venv1/
        `-- py2/
            `-- .venv2/

ディレクトリ名は任意ですが、例の場合は、py1py2が仮想環境の単位となります。

.venv1.venv2が仮想環境の名前および設定ファイルとなります。

仮想環境の構築手順

まずは、ユーザーのホームディレクトリ/home/ユーザー名/で仮想環境用のディレクトリを作成します。py_venvs/py1を作成&移動し、そこに.venv1という仮想環境を作成します。

mkdir py_venvs
cd py_venvs
mkdir py1
cd py1
python3 -m venv .venv1 #.venv1という仮想環境を作成

仮想環境の切り替え

上記で作成した仮想環境.venv1ですが、今のままで実行対象となっていないため切り替えを行う必要があります。

仮想環境の切り替えは、設定ファイル.venv1の中にあるactivateをsourceで実行します。

source .venv1/bin/activate

sorceコマンドは、現在のshellで対象ファイルのコマンドを実行することができます。

実行するとプロンプトが以下のように表示されます。

 

Pythonコードの実行

それでは仮想環境も準備ができたので、実際にPythonのプログラムコードを実行してみます。

vimエディタでhello.pyを作成します。

vim hello.py

Pythonのプログラムコードは以下です。

print("Hello World!")

保存ができたら、以下のコマンドでPythonプログラムを実行する。

python hello.py
Hello World!

実行結果としてコマンドラインに「Hello World!」が出力され、Pythonのプログラムコードが実行されたことが確認できました。

仮想環境へのパッケージインストール

仮想環境に対してもパッケージを追加することができます。

ベース環境にインストールしたパッケージは仮想環境へ引き継がれませんので、仮想環境を作成するたびに再度インストールする必要があります。

仮想環境でインストール済みのパッケージを確認します。

pip list #仮想環境へインストール済みのパッケージ一覧取得
Package    Version
---------- -------
pip        22.3
setuptools 65.5.0

ベース環境をインストールした際に追加したnumpyパッケージが存在しないことがわかります。

そでは、ここに同じくnumpyを追加していきます。

python3 -m pip install -U pip #pipのアップデート
python3 -m pip install numpy #numpyのインストール
pip list #パッケージ一覧を取得
Package    Version
---------- -------
numpy      1.23.4
pip        22.3
setuptools 65.5.0

インストール結果を確認するとパッケージ一覧にnumpyが追加されているのがわかります。

numpyを使ったプログラムコードを実行してみます。

vim calc.py

vimでcalc.pyのpythonプログラムコードを開いたら以下のコードを入力します。

import numpy as np #numpyパッケージを利用することの宣言

print("root2 : " + str(np.sqrt(2))) #ルート2

print("e : " + str(np.e)) #自然対数e

print("pi : " + str(np.pi)) #円周率

print("log2 : " + str(np.log(2))) #log2

calc = np.roots([1,2,-8]) #2次方程式
print("X^2+2X-8 : " + str(calc))

実行すると以下の結果が表示される。

python calc.py
root2 : 1.4142135623730951
e : 2.718281828459045
pi : 3.141592653589793
log2 : 0.6931471805599453
X^2+2X-8 : [-4.  2.]

2次関数のほかに連立方程式や行列計算なんかも行うことができます。numpyで計算した値を機械学習のプログラムに流すというような使い方をすることが多いかと思います。

パッケージの削除

仮想環境へインストールしたパッケージを削除するためには以下のコマンドを実行します。

python3 -m pip uninstall numpy #削除
pip list
Package    Version
---------- -------
pip        22.3
setuptools 65.5.0

パッケージ一覧からnumpyが削除されていることが確認できます。

仮想環境の終了

選択した仮想環境を終了するためには以下のコマンドを実行します。

deactivate

仮想環境のコピー

現在の仮想環境をコピーして別の仮想環境として構築することができます。

そのため一時的にパッケージをインストールして試したい時など、手軽に利用することができます。

python3 -m pip freeze > env.txt
cat env.txt
numpy==1.23.4

1行目の>はリダイレクトと呼ばれ、左の出力内容を、右にそのまま出力することができます。

この場合は、仮想環境のコピー内容をenv.txtに書き出すことができます。

そのため2行目のcatコマンドでenv.txtを標準出力すると3行目の結果が表示されます。

次に、コピーした内容を別の仮想環境にインストールします。

まずは別の仮想環境を構築・選択します。

cd ../py2 #py2ディレクトリへ移動
python3 -m venv .venv2 #仮想環境.venv2を作成
source .venv2/bin/activate #仮想環境.venv2を選択
(.venv2) root@9a63ac5fd455:~/py_venvs/py2#

仮想環境構築直後のため、パッケージは初期状態のままとなっています。

pip list #パッケージ一覧
Package    Version
---------- -------
pip        22.3
setuptools 65.5.0

次に、コピーしたenv.txtをもとにインストールする。

python3 -m pip install -r ../py1/env.txt #env.txtからパッケージをインストール
pip list
Package    Version
---------- -------
numpy      1.23.4
pip        22.3
setuptools 65.5.0

numpyがインストールされていることが確認できます。

仮想環境の初期化、削除

仮想環境を初期化するためには以下のコマンドを実行します。

deactivate #仮想環境を起動している場合は終了する
python3 -m venv --clear .venv2 #仮想環境の初期化

初期化されていることを確認します。

pip list
Package    Version
---------- -------
pip        22.3
setuptools 65.5.0

numpyがなくなり初期状態になっていることが確認できました。

次に、仮想環境を削除します。削除する場合は、仮想環境のディレクトリを削除するだけでOKです。

deactivate #仮想環境を起動している場合は終了する
rm -rf .venv2 #仮想環境のディレクトリ削除

rmコマンドはファイルおよびディレクトリを削除可能となります。-rオプションはディレクトリの中身すべての階層を削除します。-fオプションはエラー時のメッセージを表示しないで実行します。

まとめ

UbuntuにインストールしたPythonの仮想環境であるvenvを使って実行環境を構築・操作する方法をまとめました。
これでPythonの開発がはかどると思いますので、ガンガンプログラミングしていきましょう。
Pythonのプログラミング言語についてより詳しく知りたい方は以下のような書籍を参考にしてみてください。
スッキリわかるPython入門 (スッキリわかる入門シリーズ)
著者:国本大悟 (著), 須藤秋良 (著), 株式会社フレアリンク (監修)
出版社:インプレス
はじめての人・つまずいた人・納得したい人のための入門書。サクサク進めてしくみもバッチリ!プログラミングの「本質」を身に付け未来への道を切り拓こう!業務自動化、データサイエンス、人工知能、アプリ開発プログラマへの第一歩!出典:Amazon
入門 Python 3 第2版
著者:Bill Lubanovic (著), 鈴木 駿 (監修), 長尾 高弘 (翻訳)
出版社:オライリージャパン; 第2版
データサイエンスやウェブ開発、セキュリティなど、さまざまな分野で人気を獲得してきているPython。本書は、ベストセラー『入門 Python 3』の6年ぶりの改訂版で、プログラミング初級者を対象としたPythonの入門書です。プログラミングおよびPythonの基礎から、ウェブ、データベース、ネットワーク、並行処理といった応用まで、実践を見据えたPythonプログラミングをわかりやすく丁寧に説明します。Python 3.9に対応し、f文字列などの新機能も追加され大幅にボリュームアップしました。Pythonの機能をひと通り網羅し、リファレンスとしても便利です。出典:Amazon
たった1日で基本が身に付く! Docker/Kubernetes超入門
著者:伊藤 裕一 (著)
出版社:技術評論社
本書は、次世代のアプリケーションアーキテクチャとして注目されている「マイクロサービス」の技術基盤となるコンテナ技術「Docker」とコンテナオーケストレーション技術「Kubernetes」を取り上げ、Dockerの基本的な利用法、DockerfileやComposeの設計、コンテナのデータ永続化やCI/CD、Kubernetesによる複数コンテナの自動管理までを、一気に学習します。出典:Amazon