Ubuntu における Python 環境の構築
|
Linux OSは、Linux カーネルと言われる核の部分と Linux シェルと呼ばれるコマンド群から構成されています。Linux カーネルはコンピュータのハードウエアを直接操作する命令群から構成されます。しかし、ユーザーがカーネルを直接操作することはできないので、カーネルとユーザーの間にインターフェースが必要になります。この役割を果たすのがシェルの領域です。一般に Linux OS と呼ばれるときは、このカーネルとシェルの両方を含めたものを指します。
Linux OS をインストールするときは、どの Linux ディストリビューションを選択するかが重要です。なぜなら、ディストリビューションに依存してシェルの部分が若干異なるからです。 Linux ディストリビューションは大きく分けて以下の2系統になります。Red Hat 系(CentOS、Fedora など)と Debian 系(Debian GNU/Linux 、 Ubuntuなど)になります。2系統において、シェルの領域には異なるコマンドがありますが、共通する部分が大多数で、カーネルは同一になっています。ここでは、Debian 系の Ubuntu をインストールします。
Ubuntuは、できる限り多くの言語に対応すべく国際化が進められており、もちろん日本語での利用も可能です。 Ubuntu Japanese Teamが、Ubuntu日本語サポートをより良いものとする活動を進めています。Japanese Teamでは、現在のところUbuntuに追加できていない修正を加えたパッケージ、および日本語環境に必要とされるパッケージを収録したRemixイメージを作成・配布しています。このJapanese Teamのパッケージを含むイメージを、オリジナルのUbuntuと区別するために「日本語 Remix」と呼んでいます。このページでは、Ubuntuの日本語Remix版をインストールします。
Ubuntu にはインストール時に Python もインストールされていて、このPythonのバージョンが古いことが多い。最新バージョンのPythonを利用するためには、このシステムPythonと異なるPythonをインストールする必要に迫られる。Ubuntuだけでなく、MacOSでも同様の問題に直面します。
Python を使って開発を行うときは、用途に応じて専用の実行環境を作成し、切り替えて使用するのが一般的です。こういった、一時的に作成する実行環境を、「仮想環境」 と言います。pythonの仮想環境を作成するツールとして、pythonモジュールにvenv がありますが、ここでは使用しません。pyenv を使用します。pyenvは「一つのマシンに複数のバージョンのpythonをインストールしてそれを切り替えて使える仕組み」を提供します。例えば、新しいプロジェクトでは最新の3.9.10を使うけど、メンテナンスモードに入っている古いプロジェクトでは 3.7を使わなければならない時に、一々Pythonをインストールし直していたら面倒です。この時、pyenvを使えば複数のバージョンのPythonをインストールできて、それを切り替えて使うことができます。
このページでは、Ubutnu のインストール、Pyenv および Venv を用いたPython の仮想環境を作成する手順を説明します。作成された仮想環境下に、Python APIのTensorFlow 及び PyTorch インストールする方法を説明します。Ubuntu OS の取扱説明はLinux OS 入門のページを参照ください。
Last updated: 2022.9.20
Ubuntu 20.04LTSのインストール |
最初に、Ubuntu 20.04 LTS のインストールの手続きを説明します。すでに自身のPCに Ubuntu がインストールされている人は、この節をスキップしてください。
ubuntu-ja-20.04.1-desktop-amd64.iso(ISOイメージ)をPCにダウンロードして、それをUSBメモリにコピーします。このUbuntu用のイメージファイルはUbuntu の日本語版ダウンロードサイトからダウンロードできます。一般的なPCにインストールする場合は、「ubuntu-20.04-desktop-amd64.iso」をダウンロードしてください。
VirtualBoxにインストールする時は、ダウンロードしたISOファイルがそのまま使えますが、PCにインストールする場合はISOイメージファイルをUSBメモリなどに書き込む必要があります。ISOイメージを書き込んだUSBは「ライブUSB」とも呼ばれます。これらをPCにセットして電源を入れることで、インストールすることなくUbuntu 20.04 LTSのデスクトップを試したり、内蔵ストレージにインストールしたりできます。
使用するUSBに古いOS等が残っている場合、FAT形式でフォーマットします(新品のUSBの時はフォーマットする必要はありません)。ダウンロードしておいたLinuxのISOイメージファイルをUSBにコピーします。Mac や Linux では、cp コマンドなどでコピーができます。なお、Ubuntu を Mac にインストールする手続きはこの公式サイトに(英文)説明があります。Mac でライブUSBを作成するために用いられるソフトに、Etcherというフリーソフトがあります。Windows で、ライブUSBメモリを作成したり、フォーマットをするためのソフトウェアの一つにRufus (ルーファス) があります。
ISOファイルをコピーしたライブUSBをPCのUSBポートに接続して、電源を入れます。Macでは、「option」キーを押しながら電源を入れます。スタートアップ・マネジャーが Ubuntu の EFI boot を表示するので、これを選択します。Windows PCでは、「F2」や「Del」といったボタンなどのキーを押しながら起動して、BIOSあるいはUEFIの設定画面を出し、USBメモリから起動するよう選択します。
ライブUSBからの起動時に、ファイルが壊れていないかのチェックが自動実行されるようになっています。30分程度の時間がかかります。起動が完了すると、インストール画面が表示されます。
左側の言語リストをスクロールダウンし、「日本語」をクリックしてください。そうすると、画面が日本語での表示に変わります。PCにインストールするときは、「ubuntuをインストール」をクリックします。画面の指示に従って進みまう。キーボードの選択はJapaneseを選んだ方がベターでしょう。後で変更することはできます。
インストールは1時間程度かかります。気長に待ちましょう。インストールが終了すると、再起動することが要求されます。再起動すると、以下のようなメッセージが表示された場合は、USBメモリを抜いて、Enterキーを押してください。
「please remove the installation medium, then press ENTER」
ログイン画面が出て、コマンド入力を要求する状態のプロンプトが表示されます。ログインに成功すると、Ubuntuのデスクトップが表示されます。最初に「オンラインアカウントへの接続」ページが表示されます。アカウントを登録したい各項目をクリックして設定することで、Ubuntuから各オンラインサービスを利用できるようになります。右上の「スキップ」を押して次のページに進むことができます。なお、オンラインサービスへの接続や接続解除は設定アプリでいつでも設定できます。
日本語入力をオンにするには、日本語(mozc)がインストールされているので、地域と言語の設定画面で日本語(mozc)を選択します。ログインした時、画面右上に「日本語 (Mozc)」が表示されているかを確認して、「日本語 (Mozc)」をクリックして、入力方式を「hiragana」とすると、日本語が入力できます。英語に戻するときは、入力方式の設定で「direct input」をクリックします。少なくともこのページでは日本語入力は必要ありません。
なお、MacBookAirのキーボード配列に合わせるためには、以下で説明するターミナルから以下のコマンドを入力して
$ sudo dpkg-reconfigure keyboard-configuration
以下の設定をします。キーボードのモデルとして、Apple Aluminium (JIS)を選択、キーボードが由来する国で「日本語」、キーボードのレイアウトで「日本語ー日本語(Macintosh)」、ナショナル・ラテンモードで「切り替えなし」、ナショナル・ラテン入力で「一時切替えなし」、「キーボード配置のデフォルト」、「コンポーズキーなし」、Control+Alt+Backspace キー使用で「いいえ」を選択します。「英数」キーは機能しません。mozcモードで「かな」キーで半角全角の切り替えはできますが、日本語と英字との切り替えはやはり、入力方式で切り替える必要があります。
Linuxの操作はWindowsやMacのようにマウスで操作するGUI(グラフィカルユーザインタフェース)方式ではなく、キーボードからコマンド打って操作するCUI(キャラクタユーザインタフェース)方式になります。Ubuntu のデスクトップ画面で、ターミナルのウインドウを起動させて、このターミナルのプロンプトの後にコマンドを入力します。
デスクトップ画面で、アクティビティをクリックして、検索で「terminal」と入力すると、「端末」というウインドウが表示されます。これをクリックするとターミナル画面が出ます。または、次のようにもできます。デスクトップ画面の左メニューバーの最も下にある「アプリケーションを表示する」という箇所をクリックすると、使用可能なソフトが表示されます。その中に、「ユーティリティ」というウインドウがあり、この中に「端末」があります。これをメニューバーに移動して常駐させることができます。
簡単なエディターをインストールしましょう。ターミナルを起動して、
$ sudo apt-get install gedit nano
と入力します。geditはとてもシンプルで操作が分かりやすいエディターです。
PyenvによるPython環境の構築 |
この項目は、以下の Pyenv のサイトの解説を参考にしています。
pyenvは,システムPython とは別の Python をインストールするのに便利なツールです。pyenv をインストールし、pyenv の配下に Python 3.9.10をインストールします。Tensorflow はPython 3.9 までサポートします(2022年9月)。
最初に、その準備として、Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行します。実行後、再起動します。
$ sudo apt update $ sudo apt upgrade $ sudo reboot
既にインストールされている pyenv を消去しておきます。
$ rm -rf ~/.pyenv
pyenv のダウンロードと更新をします。仮想環境を ~/.pyenv 以下に作成します。
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv $ cd ~/.pyenv $ git pull
git pull はpyenvのアップデートをするためです。名称 pyenv は任意ですが、通常、この通りにします。
pyenv がインストールできたら、その設定をします。bashrcファイルに以下のパス設定を追加します。
$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bashrc $ echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc $ $ echo ' export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc $ echo 'fi' >> ~/.bashrc $ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc $ source ~/.bashrc
この結果、bashrc ファイルには以下の部分が追加されています。
export PYENV_ROOT="${HOME}/.pyenv" if [ -d "${PYENV_ROOT}" ]; then export PATH="${PYENV_ROOT}/bin:$PATH" fi if command -v pyenv 1>/dev/null 2>&1;then eval "$(pyenv init -)" fi
もう少し単純なパスの設定は以下のようになります。どちらの修正を採用するかは好みによります。
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc $ source ~/.bashrc
Pythonをインストールする前に関係するライブラリのインストールをしておきます。
$ sudo apt -y install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
pyenv を使用して、システム Python とは別に Python 3.9.10 をインストールします。新しく端末を開いて、システム Python のバージョンを確認してみる。
$ which python3 $ python3 --version
インストールできる Python 3.9 のバージョンの確認をします。Python 3.10 の場合は、 grep 3.10 とします。
$ pyenv install -l | grep 3.9
Python 3.9.10 をインストールします。
$ pyenv install 3.9.10
Python のパッケージがインストールされる。仮想環境 3.9.10 にpip, setuptools もインストールします。pyenv shell 3.9.10 コマンドで仮想環境3.9.10に切り替えます。
$ pyenv shell 3.9.10 $ python -m pip install -U pip setuptools
Python 環境の切り替えは次のようなコマンドで行います。
$ pyenv shell system (システムPythonに切り替え) $ pyenv shell 3.9.10 $ pyenv global 3.9.10 # Python 3.9.10 をPC全体で使用
デフォルトで pyenv 環境下の Python 3.9.10 を使いたいときは, 次のように設定する
$ echo 'pyenv shell 3.9.10' >> ~/.bashrc $ exec $SHELL -l
exec $shell はログインシェルから起動したようにシェルを再起動するコマンドです。
pyenv の確認をするために、新しく端末を開きます。~/.pyenv/versions ディレクトリを見てみましょう。仮想環境にインストールされているバージョンの一覧が表示されます。
$ ls ~/.pyenv/versions
Pyenv 仮想環境に切り替えて、Python 3.9.10 を起動してみよう。
$ pyenv shell 3.9.10 $ python Python 3.9.10 (main, Aug 30 2022, 05:12:36) [Clang 13.1.6 (clang-1316.0.21.2.5)] Type "help", "copyright", "credits" or "license" for more information. >>> >>> quit()
仮想環境内の pip と setuptools の更新をします。
$ python -m pip install -U pip setuptools
Jupyter 関連モジュール(JupyterLab, notebook, spyder)を仮想環境にインストールします。
$ python -m pip install -U jupyterlab jupyter notebook spyder
JupyterLab の起動は,
$ jupyter_lab
Jupyter notebook の起動は,
$ jupyter notebook
とします。
なお、pyenv で Anaconda をインストールすることもできます。以下のように、インストールできるAnaconda の一覧を表示して、選択してからインストールします。
$ pyenv install -l | grep anaconda ... anaconda3-4.3.0 anaconda3-4.3.1 anaconda3-4.4.0 anaconda3-5.0.0 anaconda3-5.0.1 anaconda3-5.1.0 anaconda3-5.2.0 anaconda3-5.3.0 anaconda3-5.3.1 ... $ pyenv install anaconda3-5.3.1
Anaconadのインストールバージョンを確認します。
pyenv versions ---- anaconda3-5.3.1
こうして、Anaconda環境下での仮想環境を作成することができます。
Venv を用いた仮想環境の構築 |
Ubuntu には Python 3.x がプリインストールされているので、venv を用いた 仮想環境を構築するために、
$ python3 -m venv .venv
と入力して、仮想環境を .venv 内に作成します。このコマンドは、指定したディレクトリ ~/.venv に仮想環境を作成します。仮想環境のディレクトリ名は、 .venv 以外でも、好きな名前をつけても大丈夫です。 Ubuntu におけるvenv を用いた仮想環境の構築についてはUbuntu 環境の Python を見てください。
作成した仮想環境 .venv ディレクトリにある bin/activate を、. または source コマンドで実行して、仮想環境に切り替えます。
$ source .venv/bin/activate # sh, bash, ksh, or zsh (venv) $
コマンド プロンプトの先頭に (venv) と表示され、仮想環境で実行中であることがわかります。pip をアップグレードするときは、以下のように打ちます。その後、仮想環境用の Python モジュールをインストールします。 pip list は site-packages にインストールされたモジュールの一覧を表示します。
(venv) $ python3 -m pip install --upgrade pip (venv) $ pip list # show packages installed within the virtual environment
仮想環境からシステム Python を使用する通常の状態に切り替えるときは、deactivate コマンドを実行します。
(venv) $ deactivate # don't exit until you're done using TensorFlow $ #このシェルプロンプト状態では .venv にインストールしたPythonは使用できません。
Python のモジュールをインストールするときは、以下のようにします。
$ source .venv/bin/activate (venv)$ python3 -m pip install numpy scipy pillow pydot matplotlib seaborn scikit-learn scikit-image keras pandas opencv-python
機械学習で必要とされる主要なパッケージが仮想環境下にインストールされます。
続けて、Python を起動して、NumPy のバージョンの確認をします。
(venv)$ python3 Python 3.9.10 (main, Aug 30 2022, 05:12:36) [Clang 13.1.6 (clang-1316.0.21.2.5)] Type "help", "copyright", "credits" or "license" for more information. >>> import numpy as np >>> np.__version__ '1.20.3' >>> quit() (venv)$
複数のバージョンのシステムPython をインストールしている環境では、使用する Python を指定して仮想環境を作成できます。
Python 3.7とPython 3.8がインストールされた環境で、Python 3.7の仮想環境を作成する場合は、python3.7 を使って次のように指定します。ここでは、仮想環境をディレクトリ py37env に作成します。
$ python3.7 -m venv py37env
ここで作成した py37env を使用すると、python 3.7の仮想環境に切り替わります。
$ source py37env/bin/activate (py37env)$
以上で、複数種類のPython を使用できる仮想環境が構築できました。
最新バージョンのCMake (CMake-3.20.0)のインストール |
Ubuntu版 CMake はバージョンが古いので、時々トラブルになります。最新バージョンのCMake (CMake-3.20.0)のインストール方法について説明します。必要なモジュールをインストールします。
$ sudo apt-get install build-essential libssl-dev
CMakeのソースコードをダウンロードします。ダウンロードしたtar.gzファイルを解凍展開します。
$ wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0.tar.gz $ tar -zxvf cmake-3.20.0.tar.gz
展開されたフォルダーに移動して、ソースコードをコンパイルして、インストールします。
$ cd cmake-3.20.0 $ ./bootstrap
bootstrap 過程は 10分程度かかります。 CMake がブートストラップされた時、makeコマンドを入力します。これも10分以上かかります。
$ make $ sudo make install $ cmake --version
CMake 3.20.0 がUbuntuに正常にインストールされました。
TensorFlow 及び PyTorch のインストール |
Pyenv による仮想環境で、TensorFlow 、Keras 、MatplotLib 、Python 用 opencv-python のインストールをします。最初に、「pyenv shell 」を次のように実行する。
$ pyenv shell 3.9.10
トラブルの可能性を減らすために,次の操作でアンインストールを行っておく。
$ python -m pip uninstall -y tensorflow tensorflow-cpu tensorflow-gpu tensorflow_datasets tensorflow-hub keras
TensorFlow 、Keras 、MatplotLib 、Python 用 opencv-python のインストールを行います。以下のコマンドをターミナルから入力してください。最新バージョンがダウンロードされます。
$ python -m pip install -U pip setuptools $ sudo apt -y install libopencv-dev libopencv-core-dev python3-opencv $ python -m pip install -U tensorflow $ python -m pip install numpy scipy pillow pydot matplotlib seaborn scikit-learn scikit-image keras pandas opencv-python
Python の numpy がインストールできたことの確認をしてみましょう。
python -c "import numpy; print( numpy.__version__ )"
TensorFlow のバージョン確認をします。
python -c "import tensorflow as tf; print( tf.__version__ )"
Keras のバージョン確認もします。
python -c "import keras; print( keras.__version__ )"
次に、PyTorch のインストールをしましょう。最新バージョンは以下のコマンドでインストールできます。
$ python -m pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu
最新バージョンがインストールされます。過去のバージョン、例えば、torch 1.8.1 をインストールしたいときは、以下のようにします。
# for cpu only python -m pip install torch==1.8.1+cpu torchvision==0.9.1+cpu torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
GPUのtoolkitがCUDA 11.1の時は
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
インストールの確認をしておきましょう。
python >>import torch >>x = torch.rand(5, 3) >>print(x)
以下のように表示されます。
tensor([[ 0.0000e+00, -2.5244e-29, -4.7749e+03], [-8.5920e+09, 6.2369e-30, 1.4013e-45], [ 6.2836e-30, 1.4013e-45, 6.2836e-30], [ 1.4013e-45, 6.2778e-30, 1.4013e-45], [ 6.2821e-30, 1.4013e-45, 3.8576e-32]])
以上で、Tensorflow および PyTorch がインストールできました。この結果、これらを使用した機械学習のライブラリを実行できます。