aburi6800のブログ

コンピュータのプログラミング、ゲームに関するニッチな情報を書いていくブログです。

【Python】Pythonの仮想環境を使う

例えば、複数のアプリケーションを開発していて、導入パッケージがそれぞれ異なる場合、各アプリケーションで最低限必要なものだけを導入した環境が欲しくなることがある。
また、Pythonの基本的なバージョンは上げつつ、開発中のアプリケーションは特定のバージョンに固定したいことがある。
このようなときは、Pythonの仮想環境を使用し、Pythonのバージョンと導入パッケージをアプリケーションごとに固定する。
ここでは、Python標準機能として用意されているvenvを使用する。

仮想環境の作成

バージョンを指定せずに作成

プロジェクトのルートディレクトリで以下を実行する。 (以下は仮想環境名を.venvとした場合)

python -m venv .venv

こうすることで、パスが通ったPythonのバーションで作成される。

Linuxなどの場合は、pythonコマンドではなくpython3コマンドの場合があります。 ubuntu20.04だとpythonコマンドで大丈夫です。

仮想環境のバージョンを指定する(Windows

WIndowsの場合はpyコマンドがあるので、プロジェクトのルートディレクトリで以下を実行する。

py -3.6 -m venv .venv

最初の引数(-3.6)は、Pythonのバージョンとなる。

仮想環境のバージョンを指定する(macLinux

macLinuxの場合は、pyenvを使うのが良さそう。
githubに公開されているので、インストールする。
使い方などは以下を参照。(そのうち追記します)

参考

[https://www.mathpython.com/ja/ubuntu-python/:embed:cite]

仮想環境の使用

Windows(コマンドプロンプトPowerShell)の場合

プロジェクトのルートフォルダで以下を実行する。

./.venv/Scripts/activate

MacLinuxの場合

プロジェクトのルートディレクトリで以下を実行する。

source ./.venv/bin/activate

運用

仮想環境でパッケージをインストールする

以下コマンドを実行することで、その仮想環境にパッケージが導入される。

pip install [package name]

仮想環境に導入されているパッケージを確認する

仮想環境に切り替え後に以下コマンドを実行する。

pip freeze

仮想環境を配布する

venvしたディレクトリをそのまま渡すのではなく、各端末で仮想環境を作成しパッケージを導入する方法をとる。
まず、配布元で導入するパッケージのリストを作成する。

pip freeze > requirement.txt

作成されたrequirement.txtを配布し、構築する端末では以下コマンドでパッケージを導入する。

pip install -r requiments.txt

切り替え後のPythonのバージョンを確認する

仮想環境に切り替え後に以下コマンドを実行する。

python -V

Vは大文字

仮想環境を終了する

WindowsMacLinux共に、以下のコマンドを実行する。

deactivate

仮想環境を削除する

作成されたディレクトリを削除するだけ。

所感

pip freeze > requirements.txtをする際に余計なパッケージを含めたくないときなどは、同じpythonバージョンでも別環境を作った方が良い。
また、複数の環境が作れるので、例えば古いバージョンでバグ報告があった場合の検証環境も簡単に用意できる。
OSごとに若干操作方法が異なるが、標準で使えてお手軽だし、とても便利なので、個人開発でも積極的に使っていきたいと思う。