エンジニアライフスタイルブログを運営しているミウラ(@miumiu06171)です。
こんにちは、普段はフリーランスでシステムエンジニアをしております。
今回は、Python初心者が入門時におさえておきたい必須スキルの一つ【venv(仮想環境)】の使い方、およびVisual Studio Code (VS Code)上でvenvを使う方法も解説していきます。
VS CodeでPythonの開発環境を構築していない方は、こちらの記事もあわせてご覧ください。
venv (仮想環境) とは何か?
venvは仮想環境のことですが、そもそも仮想環境とは何かというと・・・
Pythonで開発するときはたいてい、用途に応じて専用の実行環境を作成し、この実行環境を切り替えて使用します。
この専用に用意した実行環境を【仮想環境】と呼びます。
なぜ専用の仮想環境が必要なのか?
Pythonにはバージョンが複数存在し、複数のバージョンをインストールした場合、どう使い分けられるのか?
そこでvenvを使うと、2つのバージョンの環境を切り替えていくことができます。
Pythonのバージョンの切り替え以外にも、Pythonで作成するアプリケーションは標準ライブラリ以外のパッケージやモジュールを利用することが多く、このパッケージやモジュールにもそれぞれバージョンがついているため、Pythonのバージョンと組み合わせると刻一刻と変化する実行環境をおさえておくことは非常に重要です。
以下の3つのアプリケーションの場合でみていきましょう。
【例】
アプリケーション1: Python 2.x、外部モジュールA 1.1、外部モジュールB 2.0 アプリケーション2: Python 3.x、外部モジュールA 1.3、外部モジュールB 2.0 アプリケーション3: Python 3.x、外部モジュールA 2.1、外部モジュールC 1.4 |
アプリケーション1と2では、Pythonのバージョンと外部モジュールAのバージョンが異なり、実行するたびにそれぞれのバージョンを準備して切り替えるのは手間です。
アプリケーション2と3では、Pythonのバージョンは同じでも、使用している外部モジュールAのバージョンが違っており、1つの実行環境でアプリケーション2と3を動作させることは難しいことがわかります。
なお、アプリケーション2では外部モジュールBを使っているが、アプリケーション3では外部モジュールCを使っているため、なおさら1つの実行環境でアプリケーション2と3を動作させることが難しいことがわかるかと思います。
これらを解決するために各実行環境を専用に保存しておくためにもvenvは必須スキルなのです。
venv (仮想環境) のインストール方法
venvは、Python3.3以降に標準ライブラリとして組み込まれているため、インストールは不要です。
venv (仮想環境) の基本的な使い方
それでは、venvの基本的な使い方をみていきましょう。
詳細な使い方については、Pythonドキュメントのこちらを参照してください。
venv (仮想環境) を作成する
venvを作成する方法は、以下のコマンドを実行します。
python -m venv <仮想環境名> |
venv01という仮想環境を作成するには、以下のようにコマンドを実行します。
python -m venv venv01 |
venv (仮想環境) を有効にする
venv(仮想環境)を実際に利用するには、以下のコマンドで作成したvenvを有効にする必要があります。
■Windowsの場合
$> <作成した仮想環境名>\Scripts\activate.bat ■Macの場合 source <作成した仮想環境名>\bin\activate |
venv (仮想環境) を無効にする
利用しているvenv(仮想環境)を無効(終了)するには、以下のコマンドを使用します。
■Windowsの場合
(作成した仮想環境名) $> deactivate ■Macの場合 (作成した仮想環境名) deactivate |
Visual Studio Code (VS Code)でvenvを使う
Visual Studio Code (VS Code)上でvenvを使うためには、VS Code上のターミナルウィンドウをPower Shellで利用できるようにする必要がありますので、以下の手順で事前準備を行ってください。
Power Shellの実行ポリシーを「RemoteSigned」に変更
PowerShellを管理者権限で開いて「Set-ExecutionPolicy RemoteSigned」を実行してください。
「Set-ExecutionPolicy RemoteSigned」を実行後、セキュリティポリシーを変更するか確認を求められますので、Yを入力して実行してください。
以下のように何もエラーがなければ、ポリシーの変更は完了しています。
VS Code 拡張機能のPower Shell Language Support for Visual Studio Codeをインストール
VS Codeは、さまざまなプログラミング言語に対応したエディタであるため、拡張機能も豊富です。その中でもVS CodeでPower Shellを利用するために「Power Shell Language Support for Visual Studio Code」をインストールします。
VS Codeの拡張機能をインストールする方法についてわからない場合は、こちらの記事を参照してください。
拡張機能がインストールできたら、VS Codeを再起動し、ターミナルウィンドウを開いてみましょう。
以下のようにターミナルウィンドウにPowerShellが立ち上がり、「PS 【パス名】> 」でコマンド入力状態になっていたらオッケーです。
VS Codeでvenv (仮想環境) を実践してみよう
VS Codeでvenvを実践するためにvenv01とvenv02という2つの仮想環境を用意します。
venv01はすでに存在しているアプリケーションの実行環境を想定し、このvenv01の仮想環境と同じ環境を、別のvenv02という仮想環境に再構築していきます。
venv01とvenv02の仮想環境を作成
VS Code上のPower Shellでvenv01とvenv02を作成します。
PS 【パス名】> python -m venv venv01
PS 【パス名】> python -m venv venv02 |
仮想環境をそれぞれ作成すると、カレントディレクトリにvenv01とvenv02のディレクトリができていることが確認できます。
venv01に切り替えて任意のパッケージを複数インストール
venv01は、すでに存在しているアプリケーションの実行環境を想定しているので、任意のパッケージをインストールしてみようと思います。
そのため、まずはVS CodeのPower Shell上でvenv01の仮想環境を有効にします。
VS Code上で「Ctrl + Shift + P」を押すと、リストが表示されるので、「Python: Pythonインタープリターを選択」をクリックしてください。
その後、以下のようにPythonインタープリターの一覧が表示されるので、先程作成したvenv01を選択してください。
venv01を選択しただけではまだvenv01の環境になっていないため、ターミナルウィンドウの右側にある「+」ボタンか、VS Codeのメニュー「ターミナル」→「新しいターミナル」を選択して新しいターミナルを立ち上げてください。
新しいターミナルを立ち上げると、以下のように「(venv01) PS 【パス名】> 」でコマンド入力状態になります。
このように(venv01)が表示されていれば、仮想環境を切り替えて有効にできているのでオッケーです。
次は、venv01の仮想環境に任意のパッケージを複数インストールします。
今回は、numpyとmatplotlibをインストールしてみましょう。
pip install numpy
pip install matplotlib |
venv01という仮想環境になったとしても、pythonの外部パッケージをインストールする方法に変わりはありません。
numpyとmatplotlibをインストールし、「venv01\Lib\site-packages」内にインストールされていることが確認できればオッケーです。
なお、この時点ではvenv02側の「venv02\Lib\site-packages」には、numpyとmatplotlibがインストールされていないことも確認しておきましょう。
また、本来であればnumpyとmatplotlibを含むvenv01仮想環境を使って作成したユーザーアプリケーション(Pythonプログラム)があるはずですが、今回は省略します。
venv01のインストールパッケージ情報をrequirements.txtにバックアップ
venv01の実行環境をvenv02で再構築するためにvenv01のインストールパッケージ情報をrequirements.txtにバックアップします。
requirements.txtにバックアップするには、以下のように「pip freeze」コマンドを使用します。
(venv01) PS 【パス名】> pip freeze > requirements.txt |
作成されたrequirements.txtには、各ライブラリの名前とバージョン情報が記載されています。
この各ライブラリの名前とバージョン情報が再構築するために非常に重要です。
venv02にvenv01と同じパッケージを一括でインストール
venv01のインストールパッケージ情報をバックアップできたら、次はvenv02に再構築させていきましょう。
先程作成したrequirements.txtを使って一括でインストールできるので、紹介していきます。
まずはvenv01を有効にしたように、VS Code上で「Ctrl + Shift + P」でPythonインタープリターを選択し、venv02の仮想環境に切り替えましょう。
新しいターミナルウィンドウを開けると、今度は「(venv02) PS 【パス名】> 」となり、venv02に切り替わっていたらオッケーです。
このターミナルウィンドうの状態で「pip install」コマンドの -r オプションを使ってvenv02にvenv01と同じパッケージを一括でインストールします。
(venv02) PS 【パス名】> pip install -r requirements.txt |
一括でインストールが完了したら、venv02側の「venv02\Lib\site-packages」にもnumpyとmatplotlibがインストールされていることを確認しておきましょう。
このあと本来であれば、venv01で動作していたユーザーアプリケーションをコピーし、venv02で実行できるか確認しますが、今回はここまでできたら環境の再構築はオッケーです。
まとめ
いかがでしたでしょうか。
venvの基本的な使い方に加え、venvを実践で使う方法も紹介してきました。
他人のユーザーアプリケーションの実行環境を、自分のPCで再構築することは現場でとても重要なため、本記事がPython初心者の方、入門したての方の有益な情報になれば幸いです。
【関連記事】
【TIPS】VSCode上でPython仮想環境のライブラリが認識されない(Windows編)
【TIPS】データ分析ならコレ!Python Pandas使い方まとめ(DataFrame編)