こんにちは、吉政創成 菱沼です。
今回もPythonエンジニア育成推進協会のPython 3 エンジニア認定実践試験の主教材「Python実践レシピ/技術評論社」を使って学びたいと思います。
前回は、requirements.txtを使ってインストールする際、そのバージョンに制限を書ける方法について学習しました。
今回は、venvによる仮想環境の概要と、作成・有効化・無効化の方法について学習したいと思います。
Pythonの仮想環境 venvとは?
venvと言えば、Pythonエンジニア育成推進協会の顧問理事 寺田さまのコラム記事である、おすすめ環境の中でも推奨されている仮想環境です。(Pythonのおすすめ開発環境 ver2023 ver2024)
venvはPythonパッケージのインストール先や実行環境を独立した領域に分離させられるもので、DockerやVirtualBoxなどの仮装環境とは異なる性質のものなんだそう。Python3.3から標準ライブラリとして提供されているということで、追加でインストールせずとも利用できます。
(DockerやVirtualBoxについて気になる方は参考記事をどうぞ)
ではここで、どのようなものなのか、テキストから引用してみます。
——————————-
P.10
pipを使ったPythonパッケージをインストールすると、デフォルトではパッケージをシステム全体で利用できる領域にインストールします。システム全体で参照する領域を使うと、開発時に困ったことが起こります。
(中略)
pipでは1つの環境にインストールできるPythonパッケージのバージョンは1つだけなので、2つのバージョンのDjangoを共存させることができません。
(中略)
つまり、システム全体で参照する領域をインストール先にする場合は、開発前にインストールされているDjangoのバージョンを確認し、バージョンが違っていればインストールし直す必要があります。
——————————-
(※Djangoは例で挙げられているだけで、他のパッケージでも同様です。)
正直言ってしまえば面倒くさい事態です。
というわけで、プロジェクトやアプリケーションごとに仮想環境を作ってしまえば、独立した環境であるがゆえに他の環境に影響をきたすことなく、開発が進められるのが仮想環境にするこの利点ということになります。
ちなみに私もすすめられて、最近ちょっぴり使い始めてみました。以前ならライブラリが要らなくなったら放置するか、消すかをしていましたが、依存パッケージまでは一緒に消えてくれませんし、結局放置されるものが多くなりますので、環境が汚れる一方でした。
venvはコマンドで簡単に環境を作ることができますし、要らなくなったら簡単に削除することができるという事なので、環境の管理もしやすいということで、今後楽になりそうでウキウキしてます。
venvの公式ドキュメントはこちらからどうぞ。
venvで仮想環境を作ってみよう!
さて次に、venvの使い方の解説です。テキストを引用します。
——————————-
P.12
venvは基本的に以下の流れで使います。
1.仮想環境の作成
2.仮想環境の有効化
3.仮想環境の無効化(またはほかの仮想環境の有効化)
(中略)
仮装環境を作成するにはvenvモジュールをpythonコマンドの-mオプションに指定して、スクリプトとして実行します。python -m vnevの後ろにディレクトリ名を指定すると(これは省略できません)、そのディレクトリの中に仮想環境が作成されます。
(中略)
envディレクトリのなかには、仮想環境を利用する際に必要なファイル、ファイルへのリンク、ディレクトリが作られます。主な内容は以下のとおりです。
・pythonコマンドへのシンボリックリンク
・pipコマンド
・仮想環境を有効化するスクリプト
・Pythonパッケージのインストール先ディレクトリ
——————————-
テキストでは「env」ディレクトリを作成していますので、やってみます。私はWindows環境です。
macOSやLinuxの方は、[python3.9 -m venv env]を実行後、確認するには[ls -l env]を使用します。
無事できました。
仮装環境の有効化と無効化
作った仮想環境はそのままでは仮想環境として利用できないので、有効化する必要があります。
——————————-
P.13
仮想環境を有効化するコマンドは、使用するOSやシェルによって異なります。詳細は以下の表を参照してください。(<venv>の部分は仮想環境の作成時に指定したディレクトリ名です)。
OS | シェル | コマンド |
Unix系OS | bash/zsh | $ source <venv>/bin/activate |
Unix系OS | fish | $ source <venv>/bin/activate.fish |
Unix系OS | csh/tcsh | $ source <venv>/bin/activate.csh |
Unix系OS | PowerShell Core | $ <venv>/bin/Activate.ps1 |
Windows | コマンドプロンプト | C:\> <venv>\Scripts\activate.bat |
Windows | PowerShell | PS C:\> <venv>\Scripts\activate.ps1 |
——————————-
私はコマンドプロンプト派なので、コマンドプロンプトで実行してみます。
ディレクトリ名は「env」なので、
env\Scripts\activate.bat |
と書かれます。これを実行すると、
頭に(ディレクトリ名)が付きました。これでvenvが有効化されている状態になりましたので、pythonコマンドやpipコマンドが使えるようになりました。
有効化した環境は無効化させないといけません。(全OS同じコマンド)
deactivate |
無効化が成功すると、頭の(ディレクトリ名)がなくなり、元の画面表示に戻ります。
無効化後は、仮想環境のコマンドやインストールしたパッケージの一覧は見えなくなりますので、見たいのならまた有効化してあげる必要があります。
補足)
有効化した後に、pipを使おうとしたらバージョンが古かった場合は、以下のコマンドを実行すると最新化されます。
pip install –upgrade pip |
ちなみに、仮装環境を作成する際、通常は以下のコマンドを使いますが、
python -m venv (ディレクトリ名) |
この時、
python -m venv –upgrade-deps (ディレクトリ名) |
と–upgrade-depsオプションをつけて実行すると、最初からpipコマンドは最新版でインストールされるとのこと。
それではきりが良いので、今回はこちらで終了です。
お付き合いいただきありがとうございました。
実践試験について知りたい方は以下をご覧ください。
●Python3エンジニア認定実践試験
https://www.pythonic-exam.com/exam/jissen