【20分で完了】『venv』を使うPython複数バージョン管理
こんにちは。今回はUbuntu 22.04において、複数バージョンのPythonをインストールして管理する方法を解説します。Ubuntuを標準でインストールした場合、既にPythonがインストールされています。こちらを利用すれば良いと考えてしまいそうですが、実はこのPythonは使用せず、複数の開発用のPythonを管理する必要があります。理由は以下の通りです。
- システムとの依存関係: UbuntuなどのLinuxから派出しているものに関してはシステム自体がPythonに依存していることがあります。システム用のPythonバージョンを変更したり、誤って削除したりすると、システムの一部の機能が正常に動作しなくなる可能性があります。
- プロジェクトごとの互換性: 異なる開発案件にて異なるPythonのバージョンでの開発が要求される場合があります。一つのバージョンでは動作するが、別のバージョンでは動作しないライブラリや機能が存在するため、プロジェクトの互換性を保つために複数のバージョンをインストールする必要があります。
- セキュリティと権限: システム用のPythonを使用すると、開発中のプログラムがシステムの重要な部分にアクセスできる可能性があります。これにより誤ってシステム設定を変更したり、セキュリティ上のリスクを高める可能性があります。
今回、複数の開発用のPythonを管理するため『venv』(ヴイエンブ)と呼ばれるツールを使用します。『venv』
はPythonで使用される仮想環境を作成するためのモジュールです。仮想環境を使用すると、プロジェクトごとに異なるライブラリやパッケージのバージョンを独立して管理することができます。
「色々試したいんだけど、自由に遊べる環境がない!」という方も多いと思います。そんな方にはレンタルサーバのConoHa VPSがおすすめです。月額500円程度でお財布にもやさしいです。
以下のボタンからのお申し込みで最大1ヶ月無料ですのでぜひお試しください。
さて、前提条件を以下に書きます。
<接続先VPSサーバ情報>
サーバ:ConoHa VPS
OS:Ubuntu22.04
Python:3.10.12(3.3以上であれば今回やりたいことはできます)
『venv』のインストール
Pythonの標準ライブラリの一部として提供されているためインストール不要。
『venv』を使ってみよう!
状況の整理
今現在、システム用のPython「3.10」が使用されています。
ユーザーフォルダ下に2つのプロジェクトフォルダを作成します。
・test_pj1 → Python「3.11」を使用して開発したい
・test_pj2 → Python「3.10(※)」を使用して開発したい
※システムで使用しているPython3.10とは別に扱いたい
こんな状況を考えます。
Pythonをインストールする
python3.11がインストールされていないのでvenvのパッケージを含めてインストールします。
$ sudo apt install -y python3.11 python3.11-venv
『venv』コマンドを使う
各プロジェクトフォルダに入って「venv」コマンドを打ちます。
$ cd ~/test_pj1 #各プロジェクトフォルダへ移動してください。
$ python3.11 -m venv venv
実行結果は以下のようになります。
test_pj2の方にも同様に3.10としてコマンドを打ってください。
venvをONにしてみましょう。以下のコマンドを打ってください。.(ドット)がありますので注意してください。
$. ~/test_pj1/venv/bin/activate #各プロジェクトフォルダ配下
こうなればOKです。仮想環境に入れたことになります。
各Pythonのバージョンを調べてみましょう。
<test_pj1のPythonバージョン>
<test_pj2のPythonバージョン>
これでシステムで使っているPythonを使用せずに開発作業をすることができます。
仮想環境から抜ける場合は以下のコマンドを打ってください。
$ deactivate
venvが必要なくなったら?
venvフォルダごと消去する。
Appendix
◆ 仮想環境のクリア
仮想環境内のすべてのインストール済みパッケージや、仮想環境によって作成されたファイルを削除しますが、仮想環境自体は残します。
$ python3 -m venv --clear [venvフォルダ]
◆pip3のインストール
以下のコマンドを実行してください。
$ sudo apt update
$ sudo apt install python3-pip
以下のようにインストールされればOKです。
$ pip3 --version
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)