【 Python 】仮想環境 venv の使い方!

python

仮想環境を構築せずに開発を行うのは勿体ない!(真剣な眼差し)

もっというと今後、開発を進めていく上で動かなくなるツールが出てきますよ。
あと、クライアントに配布をする際に、保有しているパッケージ等を全て圧縮かけるため『 重たくなる + 容量も重く 』クライアントに申し訳なくなります。

はじめに:仮想環境って何?

PC内に Python環境を仮想的に構築すること!
って、言っても理解に苦しむと思うので下記で詳しく解説します。


つまりどういうこと?

Python言語で何か 1つでも開発したことのある方は「pip」ツールを使用して、必要なパッケージ等をがんがんインストールしまくっていると思います。
開発に必要なパッケージなので、インストールしていくことには全く問題ありません。

何が問題かというと、PC内のローカル環境に落としまくっていることが問題です。(今後)

「pip」の本来の役割は、パッケージ管理です。

開発をしていく上で「バージョン違い」という言葉を耳にしたことがあるかもしれませんが、これによって既存の開発したツールがどんどん動かなくなっていくんですね。。


具体例

前提:上記のように、ローカル環境にパッケージをがんがんインストールして開発をしている。

[1つ目の開発に使用した環境]
・Python 3.9.xx
・パッケージ_1.0.0
・パッケージ_2.0.0
これで、問題なく動作することを確認した!

[2つ目の開発に使用した環境]
・Python 3.9.xx(上記と同じ)
・パッケージ_5.0.0(新規開発で、新たにインストールしたパッケージ)
・パッケージ_2.2.1(上記と同じパッケージだが今回、新たにインストールパッケージと互換性がなかったためアップデートをし「_2.0.0 –> _2.2.1」になった)


何も問題がないように感じられますが、仮に上記の「パッケージ_1.0.0」と「パッケージ_2.2.1」が、互換性なかったとしましょう。
どうなりますか!?
既存の開発したものが動かなくなります。

理由

ローカル環境にインストールし、各開発を行うということは言い換えれば同じパッケージをそれぞれの開発で使い回しているということです。
そこで、新規開発の際に過去のバージョンだと使えないこともあるので「アップデート」をしなくてはならないのは必然です。

もう、割り切って過去に開発したものは絶対に触らないんだ! と、固い決意を決めた方でも、これが同時に開発を行う場合だとそうはいかないんですねぇ。

上記で挙げた例のように、使用しているパッケージのバージョンが片方に依存している場合、片方に合わせた「アップデート」または「ダウングレード」すると、もう片方が動かなくなります。

それを解決するのが仮想環境なんです!


主のPC環境一覧

OS:Mac OS[Monterey]
CPU:Intel Core i7
メモリ:32GB
Python:3.9.4
pip:22.0.3


OS:Windows11
CPU:Intel® Core™ i9 13900KF
Memory:64GB
GPU:NVIDIA® GeForce RTX™ 3070 8GB
Python:3.11.2
pip:20.2.3


pythonコマンドを実行する場合、使用している OSで少し異なる
※ Macの場合、デフォルトで Python2がインストールされているため、明示的に「python3」と指定しなければならない。

// Macの場合
$ python3 <command>
// Windowsの場合
$ python <command>

[1] 仮想環境の構築(venv)

// Mac
python3 -m venv <仮想環境名>

// Windows
python -m venv <仮想環境名>

おすすめの仮想環境名「.venv

[2] 仮想環境の有効化

仮想環境を構築したものの、有効化しなければ意味がありません。

// Mac
$ source <仮想環境名>/bin/activate

// Windows(バックスラッシュに気を付けること)
$ start <仮想環境名>/Scripts/activate


// 上記入力後、以下のようになっていたらOK
(<仮想環境名>) $

上記コマンドの意味:「source」コマンドは「~を実行」というコマンドです。
故に、仮想環境の binディレクトリにある「activate」を実行させて有効化しています。

[3] 具体的な仮想環境の使い方

上の図のように新たに「Python」の環境が、PC内に構築される。

気を付けなければならないのが、[2]の有効化を忘れた状態で「pip」コマンドでパッケージをインストールしていくと、またローカル環境内にがんっがんインストールされていくので注意してくださいね。

[4] 心置きなくパッケージをインストールしていきましょう(煽り)

※:pip が使えることを確認

// Mac
$ which pip

// Windows
$ where pip

// 主の場合(下記と異なっていても問題ない)
# /Library/Frameworks/Python.framework/Versions/3.9/bin/pip


============================================================
// 以下での確認方法が完結かも、、
$ pip -V
## pip xx.x.x from <インストール先のパス>
「pip」インストール方法

基本的には、(仮想環境内に)Pythonをインストールした時点で自動的に pipは入っている

[1] Pythonのデフォルト環境で「ensurepip」モジュールが付属しているのでこれを使う

$ python3 -m ensurepip --upgrade

[2] PC内に「get-pip.py」という Pythonファイルがダウンロードされるので、それを実行

$ cd <「get-pip.py」が、ダウンロードされたディレクトリ >

// pipインストール
$ python3 get-pip.py

============================================================

// 次に、以下のコマンドで pipがインストールされたパスが表示されれば成功
// Mac
$ which pip

// Windows
$ where pip

// 主の場合(下記と異なっていても問題ない)
## /Library/Frameworks/Python.framework/Versions/3.9/bin/pip


============================================================
// 以下での確認方法が完結かも、、
$ pip -V
## pip xx.x.x from <インストール先のパス>

「パッケージ」インストール方法

$ pip install <パッケージ名>

// バージョンを指定してインストールすることも可能
$ pip install <パッケージ名==x.xx.x>

「パッケージ」アンインストール方法

$ pip uninstall <パッケージ名>

インストールされている「パッケージ」の確認方法

$ pip freeze

========================================================

// freezeコマンドは、仮想環境を共有する時にも使用することができる。
// 現状は下記にコマンドのみ記載し、使い方はまた別の記事で解説する。
$ pip freeze > requirements.txt

[5] 仮想環境の無効化

$ deactivate

最後に

これで臆することなく、ガンッガンインストールして色んなパッケージを使いこなせるように精進してください。

comment 📝

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