今回はvenvを利用して Python3 上に仮想環境を作成する方法を説明します。CentOS 7系にはPython 2系がインストールされおり、これがデフォルトのPythonバージョンになっています。Pythonの仮想環境を使うことで、デフォルトのPythonのバージョンがPython3の環境を作成することができます。
1. 仮想環境について
CentOS 7系にPython 3系をインストールすることはできますが、デフォルトのPython バージョンを2系から3系に変更すると様々な不具合が起こります。CentOS 7系は yum コマンドなどOSの基本的な機能がPython 2系に依存しているからです。
そこで利用できるのがPythonの仮想環境(venv)です。 なお、venv はvirtualenvの略ではなく、別物なのでご注意ください。
venvはPython3の標準機能なので、Python3をインストールしていれば利用できます。
今回は /var/lib 配下に venv01 と venv02 という名前の2つの仮想環境を作成する例で説明します。
Python 3をまだインストールしていない場合は以下の記事を参考にしてください。
※参考:CentOS 7にpython3をインストールする
2. 仮想環境の作成手順
1. 仮想環境を作成する
まずは以下のコマンドを実行して、仮想環境を作成します。
実行例
[centos@test01 ~]$ sudo python3 -m venv /var/lib/venv01
2. 作成したvenvをアクティベートする
source コマンドで venv をアクティベートします。
実行例
[centos@test01 ~]$ source /var/lib/venv01/bin/activate
(venv01) [centos@test01 ~]$
venvをアクティベートした後、pythonのバージョンを確認すると デフォルトがPython 3がなっていることが確認できます。
(venv01) [centos@test01 ~]$ python –version
Python 3.6.8
3. venvから抜ける
venvから抜ける場合は deactivate コマンドを実行します。
(venv01) [centos@test01 ~]$ deactivate
[centos@test01 ~]$
4. venvにアプリケーションをインストールする
まず sudo -i コマンドで root ユーザーに昇格します。
[centos@test01 ~]$ sudo -i
[root@test01 ~]#
次に source コマンドで仮想環境にログインします。
[root@test01 ~]# source /var/lib/venv01/bin/activate
(venv01) [root@test01 ~]#
仮想環境にアプリケーションをインストールするときは pip3 コマンドを使いますが、最初にこのコマンド自体をアップグレードしておきましょう。
※pipコマンドの前にはsudo を付加しないようにしてください。仮想環境ではなく、グローバル環境(元のLinux環境)が作業の対象になってしまいます。
(venv01) [root@test01 ~]# pip3 install –upgrade pip
pip3 コマンドのアップグレードが完了したら、任意のアプリケーションをインストールします。ここではdjangoというアプリケーションをインストールしています。
※繰り返しになりますが、pipコマンドの前にはsudo を付加しないようにしてください
(venv01) [root@test01 ~]# pip3 install django
インストールされているdjangoのバージョンを確認すると、3.2.4 であることがわかります 。
(venv01) [root@test01 ~]# python -m django –version
3.2.4
deactivate コマンドで 仮想環境をディアクティベートしてからバージョン確認コマンドを実行すると、No module named django と表示されます。django が Pythonの仮想環境 venv01 にインストールされ、Linux本体にはインストールされていないことがわかります。
(venv01) [root@test01 ~]# deactivate
[root@test01 ~]#
[root@test01 ~]# python -m django –version
/bin/python: No module named django
5. 2つめの仮想環境を作成する
先程は /var/lib 配下に venv01 という名前で仮想環境を作成しましたが、今度は venv02 という名前で仮想環境を作成してみます。
[centos@test01 ~]$ sudo python3 -m venv /var/lib/venv02
これで2つ目の仮想環境ができました。
6. 仮想環境を初期化する
実行例
(venv01) [root@test01 ~]# deactivate ◀ 仮想環境から抜けます
[centos@test01 ~]$ python3 -m venv –clear venv /var/lib/venv01
[centos@test01 ~]$
これで venv01 が初期化されました。venv01 をアクティベートして、先程インストールしたdjangoのバージョンを確認すると、djangoが消えていることがわかります。
[root@test01 ~]# source /var/lib/venv01/bin/activate ◀アクティベート
(venv01) [root@test01 ~]#
(venv01) [root@test01 ~]# python -m django –version ◀djangoのバージョン確認
/var/lib/venv01/bin/python: No module named django
7. 仮想環境を削除する
ディレクトリを削除することで仮想環境を削除できます。
実行例
(venv01) [root@test01 ~]# deactivate ◀ 仮想環境から抜けます
[root@test01 ~]$
[root@test01 ~]$ rm -rf venv /var/lib/venv01
[root@test01 ~]$
これで venv01 が削除されました。
このように仮想環境 (venv) を使うことで、OS本体の Pythonのデフォルトバージョンは2系のままで、Python仮想環境ではPython 3系をデフォルトとして利用することが可能になります。
コメント