Ubuntu22.04 ~pipenvで自分専用のpython実行環境を作る~

 この記事は、Linuxで初めてPythonを使ってみよう、という人向けに、Ubuntu22.04 LTSのデスクトップに、自身のユーザアカウント専用のPython開発環境を作る手順について説明します。
 自由に使えるLinuxサーバを手に入れたら、デスクトップ上でpythonのアプリケーション開発環境を作ってみましょう!

1.Ubuntu組み込みのPython

 Ubuntu22.04 LTSには、Python3.10のプログラム実行環境が最初から組み込まれています。構成の把握も兼ねて、まずはこれをみてみましょう。

 Ubuntuデスクトップから「端末」アプリを起動し、Ubuntu組み込みのpythonインタープリタのインストール先をwhichコマンドで確認してみます。

$ which python3
/usr/bin/python3
$

 OSに組み込まれたpythonの実行環境をそのまま利用することもできますが、あまりお勧めしません。
 pythonプログラミングを始めると、自身が使うpython実行環境に、パッケージやモジュールをたくさんインストールすることになります。したがって、OSに組み込みのpython実行環境を使うと、システムが利用する環境を変えてしまうことになります。

 そこで、自分(自身のユーザアカウント)専用のpythonプログラミング環境を作成して、システムのpython実行環境と分離します。

2.pipenvで自分専用のPython仮想環境作成する

2.1.pipのインストール

 最初に、Pythonのパッケージ管理ツールである"pip"をインストールします。pipenvは、pipを使ってインストールします。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install python3-pip

pipがインストールされ、パスが通っているか確認。

$ which pip
/usr/bin/pip
$ pip --version
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
$

2.2.pipenvのインストール

 pipを使って、pipenvをインストールします。

$ pip install pipenv
Defaulting to user installation because normal site-packages is not writeable
Collecting pipenv
  Downloading pipenv-2022.5.2-py2.py3-none-any.whl (3.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.9/3.9 MB 10.7 MB/s eta 0:00:00
Collecting virtualenv
  Downloading virtualenv-20.14.1-py2.py3-none-any.whl (8.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.8/8.8 MB 11.3 MB/s eta 0:00:00
Requirement already satisfied: setuptools>=36.2.1 in /usr/lib/python3/dist-packages (from pipenv) (59.6.0)
Collecting virtualenv-clone>=0.2.5
  Downloading virtualenv_clone-0.5.7-py3-none-any.whl (6.6 kB)
Collecting pip>=22.0.4
  Downloading pip-22.1.1-py3-none-any.whl (2.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 11.5 MB/s eta 0:00:00
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from pipenv) (2020.6.20)
Collecting platformdirs<3,>=2
  Downloading platformdirs-2.5.2-py3-none-any.whl (14 kB)
Collecting distlib<1,>=0.3.1
  Downloading distlib-0.3.4-py2.py3-none-any.whl (461 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 461.2/461.2 KB 11.4 MB/s eta 0:00:00
Collecting filelock<4,>=3.2
  Downloading filelock-3.7.0-py3-none-any.whl (10 kB)
Requirement already satisfied: six<2,>=1.9.0 in /usr/lib/python3/dist-packages (from virtualenv->pipenv) (1.16.0)
Installing collected packages: distlib, virtualenv-clone, platformdirs, pip, filelock, virtualenv, pipenv
  WARNING: The script virtualenv-clone is installed in '/home/ogs-digilife/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts pip, pip3 and pip3.10 are installed in '/home/ogs-digilife/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script virtualenv is installed in '/home/ogs-digilife/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts pipenv and pipenv-resolver are installed in '/home/ogs-digilife/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed distlib-0.3.4 filelock-3.7.0 pip-22.1.1 pipenv-2022.5.2 platformdirs-2.5.2 virtualenv-20.14.1 virtualenv-clone-0.5.7
$

 インストールは成功しましたが、警告がでました。
 pipenvはインストールされたが、そのディレクトリにパスが通ってない、などの警告です。
 パスを通さなくてもpipenvの実行はできるので、ここは警告を無視。pipenvの実行方法は後述します。

2.3.pipenvを使ったPython仮想環境の作成

 インストールが完了したので、次はホームディレクトリ配下の任意の場所に、Python仮想環境用のディレクトリを作成します。ディレクトリ名も任意です。ここではpipenv1としました。

$ cd ~
$ mkdir pipenv1

 作成したディレクトリに移動し、pipenvコマンドを実行してこのディレクトリ配下にpython仮想環境を作成します。仮想環境の作成はpipenvコマンドを使います。本記事の説明ではpipenvにパスを通さなかったので、Pythonインタープリタを使ってpipenvを実行します。

$ cd ~/pipenv1
$ python3 -m pipenv --python python3 install
:
略
:
$ $ ls -al
合計 16
drwxrwxr-x   2 ogs-digilife ogs-digilife 4096  528 05:25 .
drwxr-x---+ 21 ogs-digilife ogs-digilife 4096  528 05:22 ..
-rw-rw-r--   1 ogs-digilife ogs-digilife  139  528 05:25 Pipfile
-rw-r--r--   1 ogs-digilife ogs-digilife  454  528 05:25 Pipfile.lock

 これでpython仮想環境を~/pipenv1配下に作成できました。
 上記インストールコマンドのpipenvのオプション"--python"では、この仮想環境がどのPythonインタープリタを使うか、インタプリタのパスで指定しています。ここでは、--pythonオプションでpython3、すなわち、Ubuntu組み込みのPythonインタープリタを指定しています("python3"にはすでにOSでパスが通されている)。
 このため、上記で作成したpipenvのpython仮想環境は、Ubuntu組み込みのインタープリタを共有することになります。しかし、仮想環境にインストールするパッケージやモジュールはUbuntu組み込みのPython実行環境とは完全に分離されます。

 ls -lコマンドで、~/pipenv1ディレクトリのファイルを見てみます。Pipfile、Pipflie.lockの2つのファイルが作成されています。このファイルが上記コマンドで作成したpython仮想環境の設定ファイルです。

2.4.Python仮想環境への切り替え

 上記で作成したPython仮想環境を利用してみましょう。
 仮想環境を作成しただけでは、pythonの実行環境はまだUbuntu組み込みの環境のままです。Python実行環境を上記で作成した仮想環境に切り替えるためには、Python仮想環境のフォルダ(~/pipenv1)に移動し、python3 -m pipenv shellコマンドを実行します。

$ cd ~/pipenv1
$ python3 -m pipenv shell
/usr/lib/python3/dist-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: 1.16.0-unknown is an invalid version and will not be supported in a future release
  warnings.warn(
/usr/lib/python3/dist-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: 1.1build1 is an invalid version and will not be supported in a future release
  warnings.warn(
/usr/lib/python3/dist-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: 0.1.43ubuntu1 is an invalid version and will not be supported in a future release
  warnings.warn(
Launching subshell in virtual environment...
ogs-digilife@ubuntu22:~/pipenv1$  . /home/ogs-digilife/.local/share/virtualenvs/pipenv1-XX6L_UdI/bin/activate
(pipenv1) $ 

 シェルプロンプトの前に、(<Python仮想環境のディレクトリ名>)が表示されたら、このシェルのPython実行環境が、上記で作成したPython仮想環境に切り替わっています。

python仮想環境の情報を確認してみましょう。

(pipenv1) $ which python
/home/ogs-digilife/.local/share/virtualenvs/pipenv1-XX6L_UdI/bin/python
(pipenv1) $ which pip
/home/ogs-digilife/.local/share/virtualenvs/pipenv1-XX6L_UdI/bin/pip
(pipenv1) $ pip freeze
(pipenv1) $

 自分のホームディレクトリ配下のpythonインタープリタ"python"と、"pip"にパスが通っています。これが"~/pipenv1"ディレクトリに作成したpythonの実行環境です。
 pip freezeはインストール済みの外部パッケージのリストを表示するコマンドです。上記例では、まだ何もインストールしていないので何も表示されていません。

 仮想環境に外部ライブラリをインストールする場合は、仮想環境に入った状態でpipコマンドを使います。Python仮想環境で"pip"を使って外部ライブラリをインストールした場合、これらのライブラリはこの仮想環境の中だけにインストールされ、他のPython実行環境には一切影響を与えません。

 Python仮想環境に入ったシェルからPythonコードを実行すると、仮想環境でコードが実行されます。以下のようにプログラムファイルのパスを指定して実行することができます。

(pipenv1) $ python ~/path/to/hello-world.py
hello-world
(pipenv1) $

 切り替えたPython仮想環境から抜け出して元の(OS組み込みの)Python実行環境に戻るときは、exitコマンドを使います。exitコマンドは任意のディレクトリで実行できます。

(pipenv1) $ exit
exit
$ 

 Python仮想環境は、上記で説明した方法で、いくつでも作ることができます。作成するPythonアプリケーションの種類に応じて複数の下層環境を使い分けけることもできます。
 python3 -m pipenv shellとexitコマンドだけ覚えておけば良いので、お手軽ですね。

3.VS CodeによるPython統合開発環境の構築

 ユーザ専用のPython実行環境を導入したら、PythonのIDE(統合開発環境)を作って、本格的な開発環境を構築しましょう。こちらの記事では、VS Codeのインストール方法について説明しています。VS Codeは、Pythonはじめ、さまざまなプログラミング言語の IDEとして人気のMicrosoftのアプリです。
 また、VS Codeの初期設定と基本的な使い方の紹介記事では、Python仮想環境でVS Codeを使う設定方法についても説明しています。


この記事が気に入ったらサポートをしてみませんか?