Ubuntu 20.04でPythonの仮想環境venv

環境

私の環境は以下のとおりです。

OS

  • Ubuntu 20.04.2 LTS (5.11.0-27-generic)

手順

まず、デフォルトでインストールされている Python を確認してみます。Python 2 はインストールされておらず、Python 3 のみインストールされていました。

$ which python

$ which python2

$ which python3
/usr/bin/python3

$ python3 -V
Python 3.8.10

なお、Python のドキュメントによると Python 3.5 以降の仮想環境は venv とのことです。pyvenv は Python 3.6 で非推奨となりました。

Python documentation

ソースコード: Lib/venv/ venv モジュールは、軽量な仮想環境の作成を行います。それぞれの仮想環境は、 si…

バージョン 3.6 で非推奨: Python 3.3 と 3.4 では、仮想環境の作成に推奨していたツールは pyvenv でしたが、Python 3.6では非推奨です。

バージョン 3.5 で変更: 仮想環境の作成には、 venv の使用をお勧めします。

https://docs.python.org/ja/3/library/venv.html

仮想環境を作成するには venv コマンドを実行します。そのためにまず python3-venv パッケージをインストールします。その後、仮想環境を作成します。私は、ホームディレクトリの下に python という名前のディレクトリを作成し、その下に dev という仮想環境を作成しています。

$ sudo apt install -y python3-venv
$ python3 -m venv ~/python/dev

その結果、下記のようなディレクトリ、ファイルが作成されました。

$ ls ~/python/dev
bin  include  lib  lib64  pyvenv.cfg  share

仮想環境を有効化してみます。ターミナルの先頭に仮想環境名 (ここでは dev) が付くようになります。

:~$ source ~/python/dev/bin/activate
(dev) :~$

python コマンド、python3 コマンド、pip コマンド、pip3 コマンドのパスとパージョンを確認してみます。仮想環境の python コマンドは 仮想環境の python3 コマンドのシンボリックリンクであり、仮想環境の python3 コマンドは /usr/bin/python3 のシンボリックリンクのようです。pip コマンド、pip3 コマンドは仮想環境内の実行ファイルのようです。

(dev) :~$ which python
/home/hirooka/python/dev/bin/python

(dev) :~$ which python3
/home/hirooka/python/dev/bin/python3

(dev) :~$ python -V
Python 3.8.10

(dev) :~$ python3 -V
Python 3.8.10

(dev) :~$ ls -al /home/hirooka/python/dev/bin/python
lrwxrwxrwx 1 hirooka hirooka 7  8月 18 20:20 /home/hirooka/python/dev/bin/python -> python3

(dev) :~$ ls -al /home/hirooka/python/dev/bin/python3
lrwxrwxrwx 1 hirooka hirooka 16  8月 18 20:20 /home/hirooka/python/dev/bin/python3 -> /usr/bin/python3

(dev) :~$ which pip
/home/hirooka/python/dev/bin/pip

(dev) :~$ which pip3
/home/hirooka/python/dev/bin/pip3

(dev) :~$ ls -al /home/hirooka/python/dev/bin/pip
-rwxrwxr-x 1 hirooka hirooka 241  8月 18 20:22 /home/hirooka/python/dev/bin/pip

(dev) :~$ ls -al /home/hirooka/python/dev/bin/pip3
-rwxrwxr-x 1 hirooka hirooka 241  8月 18 20:22 /home/hirooka/python/dev/bin/pip3