Python venvで仮想環境を作ろう

Python
doestar<br>(ドエスタ)
doestar
(ドエスタ)

ペンぞうさん、巷では「今後はクラウドネイティブの時代だ!」なんて周りがいうから、私もクラウドの勉強を始めようと思たんですわ。
そしてちょっと調べてみたら、いいもの発見したんですよ。Diagramsです。

PythonのコードでAWS,Azure,GCPなどクラウドシステムの構成図がかけちゃうんです。

でもね、これまでPandasやPlaywrightなどいろんなライブラリをインストール済ですよね。さらに今回のDiagramsと追加していくと今後どんどん作業環境が肥大化してアプリ化した時にとんでもないサイズになる気がしてます。


システム構成図を書くだけの作業環境不要なライブラリーいれたくないんです。

何かいい方法ありますか?

ぺんぞう
ぺんぞう

Webスクレイピングにクラウドとdoestarは勉強熱心じゃのう~、感心、感心。
解決策として仮想環境作成コマンド(venvを使うと良いぞ。良い機会なので一緒に作ってみよう。

使い方

私がよく使うvenvのコマンド仕様を紹介します。詳細は公式ドキュメントをご参照ください。
手順としては、下記になります。

 1.環境作成(初回のみ)
 2.有効化
 3.必要なライブラリをインストール(例:diagrams)
 4.無効化
 5.環境削除(削除時のみ)

コマンド仕様
###  1. 作成 
python [-version] -m venv 環境名(作成したいフォルダーパス名)
> python -m venv diagrams 

##  2. 有効化
# 作成環境に移動し、Activate実行
> cd diagrams
diagrams> .\Scripts\activate

##  3.必要なライブラリをインストール
diagrams> pip install diagrams
diagrams> pip freeze #インストール済のライブラリを確認

##  4. 無効化
diagrams> deactivate 

##  5. 削除
diagrams> cd ..
> Remove-Item diagrams (Powershell:VS code)
> rm -rf diagrams (コマンドプロンプト, Mac)

1.仮想環境の構築

まずは、仮想環境を作ってみましょう。 (環境名:diagrams)
Pythonのバージョンが指定されない場合は、現在使用中のPythonのバージョンが適用されます。

1(環境作成)→ 2(有効化)→ 3(必要なライブラリインストール)→ 4(無効化)の順で説明します。

手順1.環境作成

python -m venv diagrams

手順2.有効化

> cd diagrams
diagrams> .\Scripts\activate


有効化すると仮想環境名が緑で点滅します。Python 3.10.6 がインストール済ですね。

手順3. 対象ライブラリのインストール

今回はdiagramsをインストールしましょう。
diagrams> pip install diagrams

インストールは完了です

freezeでインストール済のライブラリを確認してみます。
diagrams> pip freeze

diagramsに必要な他のライブラリもインストールされていることがかできましたね。
また、pandasやplaywrightなどdiagramsに不要なライブラリが入っていないことも確認できました。

doestar<br>(ドエスタ)
doestar
(ドエスタ)

やった、作業環境できた!
作業が終わったら無効化するんだったね。

手順4.無効化

diagrams> deactivate

完了です!

先頭の(環境名)が解除され、仮想環境が無効化されたことを確認できました。
Pythonのバージョンも、3.10.6のままですね。

(番外1) Pythonの指定バージョンでの仮想環境の構築

Pythonのバージョンがかわったことで以前動作していたPythonプログラムが動かなくなることがあります。そんな時はPythonバージョンを指定して仮想環境を作ることができます。

今回は、Python 3.8を指定して環境を作ってみます
 (環境名:diagrams_py38)


【事前準備】Python 3.8のインストーラーをPCにインストール
https://www.python.org/downloads/windows/

ダウンロードができたらダブルクリック。
インストールする際にAdd PATHにチェックを入れればOKです。


【手順1~4】環境作成 →有効化 →対象ライブラリインストール →無効化

ぺんぞう
ぺんぞう

仮想環境を実行する際のコマンド名が違っとる。python ではなく、pyじゃ! 気をつけるのじゃ。あとは一緒じゃ

(手順1:環境作成) 
py -3.8 -m venv diagrams_py38
(手順2:有効化)
.\Scripts\activate
(手順3:対象ライブラリインストール)
pip install diagrams_py38
(手順4:無効化)
deactivate

doestar<br>(ドエスタ)
doestar
(ドエスタ)

やった、Python3.8の作業もできた!
でも、今はPython3.10でいいや。
Python3.8の環境は削除しよう。

2. 削除

最後に不要になった仮想環境を削除します。単純にフォルダーを削除するだけです。
では、先ほど作ったPython3.8環境を削除してみましょう。

私は、VScodeのPowershellターミナルで実行していたのでPowershellコマンドを使って削除しますがコマンドプロンプトで削除しても全然OKです。

(Powershell:VS code)
Remove-Item diagrams_py38
(Windowsコマンドプロンプト, Mac)
rm -rf diagrams_py38

きちんとフォルダーが削除されていることが確認できました。
こちらの作業も完了です。お疲れ様でした。

仮想環境の共有 (requirement.txt)

■チームで作業する方へ
自分だけではなくチームのメンバーと共同作業したいとき同じ環境条件をそろえたいですよね?

そんな時は自分が作業しているライブラリをrequirement.txt ファイルとして共有して仮想環境をメンバーにも同様の仮想環境を作ってもらえばよいのです。

(例)
メンバーへ「project_doestarという仮想環境名をつくって作業してください」と指示した場合


【自分】
自分の仮想環境のライブラリをrequirement.txt に出力し、メンバーに共有。
pip freeze > requirement.txt

diagrams==0.23.3
graphviz==0.20.1
Jinja2==3.1.2
MarkupSafe==2.1.3
typed-ast==1.5.4

【メンバー】
仮想環境作成を作成し、共有されたrequirement.txtを仮想環境にコピーしてrequirement.txt指定でライブラリをインストール
(仮想環境名:project_doestar)
python -m venv project_doestar
.\Scripts\activate
cp ..\requirement.txt .
pip install -r .\requirement.txt
pip freeze

環境を共有することができました。
このように仮想環境をメンバーと統一することで、Aさんはうまく動くけど、なぜかBさんは動かないといった環境の違いによるトラブルシューティングを回避することができますので是非ご活用ください。

また、今後Dockerなどコンテナ技術でも活用されていますので覚えるとよさそうです。

さいごに

仕事でもプライベートでも目的別に仮想環境を使い分けてましたが、動けばOKというぐらいに思っていました。今後Docker、Kubernetesを学んでいかなければならない状況になってますので、requirement.txt を活用していこうと思います。

参考

venv_仮想環境の作成(公式サイト)
Pythonにおける仮想環境「venv」について
venvで作成したPythonの仮想環境を初期化 or 削除するには?
PythonJapan_仮想環境
[Python] venv で作成した仮想環境を –clear オプションで初期状態にクリアする – てくなべ (tekunabe) (hatenablog.jp)

コメント

タイトルとURLをコピーしました