システム Python とは別に Python をインストール(pyenv を使用)(Ubuntu 上)

pyenvは,システム Python とは別の Python をインストールするのに便利なツールである.Python のバージョンをディレクトリ単位やシェル単位で切り替える機能を持つ.

ここで行うこと.

pyenv をインストールする.pyenv の配下に Python 3.13 をインストールする(同じ手順で Python 3.12, Python 3.11 など複数のバージョンを並行してインストールできる).

* このページの手順は,Ubuntu 24.04 LTS と, WSL 2 上の Ubuntu 24.04 LTS を前提に記述している.

目次

  1. 前準備
  2. pyenv のインストールと設定
  3. システム Python とは別に Python 3.13 をインストール (pyenv を使用)
  4. pyenv の確認
  5. 各種パッケージのインストール
  6. SWIG を使ってみる
  7. 性能の確認

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

pyenv のインストールと設定

pyenv のインストール

pyenv は,複数バージョンの Python のインストールと切り替えを行うソフトウェアである.pyenv は Python をソースコードからビルドしてインストールするため、ビルドに必要な開発用ライブラリをあらかじめ導入しておく.

  1. ビルドに必要なライブラリのインストール

    端末で,次のコマンドを実行する.

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl git llvm libncurses-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
    
  2. いまインストールされている pyenv の消去

    次のコマンドは ~/.pyenv を削除する.pyenv 配下にインストール済みの Python とパッケージも同時に消えるため、既存の環境を使い続ける場合はこの操作を行わない.

    rm -rf ~/.pyenv
    
  3. pyenv のダウンロードと更新

    src/configuremake -C src は,シェル用の高速化拡張をビルドするための操作である(必須ではない).

    cd /tmp
    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    cd ~/.pyenv
    git pull
    src/configure
    make -C src
    
  4. pyenv の設定

    PYENV_ROOT の設定,PATH への追加,pyenv init の実行を,bash の設定ファイル ~/.bashrc に追記する.Ubuntu の既定の ~/.profile~/.bashrc を読み込むため、ログインシェルでも有効になる.

    echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bashrc
    echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc
    echo '    export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.bashrc
    echo '    eval "$(pyenv init - bash)"' >> ~/.bashrc
    echo 'fi' >> ~/.bashrc
    exec $SHELL -l
    

システム Python とは別に Python 3.13 をインストール (pyenv を使用)

  1. 新しく端末を開く
  2. システム python のバージョンを確認してみる
    which python3
    python3 --version
    
  3. インストールできる Python のバージョンの確認
    pyenv rehash
    pyenv install -l
    
  4. インストールできる Python 3.13 のバージョンの確認
    pyenv install -l | grep 3.13
    
  5. Python 3.13.5 のインストール

    以下では 3.13.5 を例とする.上のコマンドで表示された中から最新の 3.13 系のバージョン番号を指定してもよい.その場合は、以降のコマンドのバージョン番号も同じものに読み替える.

    pyenv install 3.13.5
    
  6. pip, setuptools のインストール
    pyenv shell 3.13.5
    python -m pip install -U pip setuptools
    
    使用する Python の切り替えは次のようなコマンドで行う.pyenv shell の効果は,そのコマンドを実行した端末の中だけで有効である.
    • pyenv shell system
    • pyenv shell 3.13.5

    常に pyenv 配下の Python 3.13.5 を使いたいときは, 次のように設定する.pyenv global は,端末を開き直しても有効な既定のバージョンを設定するコマンドである.

    pyenv global 3.13.5
    
  7. 試しに Python 3.13.5 を起動してみる
    pyenv shell 3.13.5
    python --version
    python
    print(1 + 2)
    exit()
    
    「pyenv shell ・・・」でうまく Python のバージョンが切り替わらない場合には「source ~/.bashrc」を実行してから,もう一度上を試す

pyenv の確認

  1. 新しく端末を開く
  2. ~/.pyenv/versions ディレクトリ

    pyenv 配下にインストールされた Python は,このディレクトリの下に,バージョンごとに分かれて置かれる.

    ls ~/.pyenv/versions
    
  3. インストールされている Python のバージョンの一覧
    pyenv versions
    
  4. pyenv により,pip も同時に設定される
    pyenv shell 3.13.5
    which python
    which pip
    pip list
    

各種パッケージのインストール

pip と setuptools の更新

pyenv shell 3.13.5
python -m pip install -U pip setuptools

Python 開発環境,Python コンソール(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), JupyterLab, spyder)のインストール

次のように実行する.

pyenv shell 3.13.5
python -m pip install -U jupyterlab notebook jupyter-console jupytext spyder
JupyterLab の起動は,「pyenv shell <バージョン>; jupyter lab」. Jupyter Qt Console の起動は,「pyenv shell <バージョン>; jupyter qtconsole」.

TensorFlow,Keras,MatplotLib, Python 用 opencv-python のインストール(Ubuntu 上)

TensorFlow 2.16 以降の KerasKeras 3 である.TensorFlow が対応する Python のバージョンは,リリースごとに変わるため,TensorFlow 公式のインストール手順で確認する.

  1. 「pyenv shell の実行」

    次のように実行する.

    pyenv shell 3.13.5
    
  2. パッケージのアンインストール操作

    * 依存関係の競合を避けるために,次の操作でアンインストールを行っておく.

    python -m pip uninstall -y tensorflow tensorflow-cpu tensorflow-gpu tensorflow-intel tensorflow-text tensorflow-estimator tf_slim tensorflow_datasets tensorflow-hub keras tf-keras keras-tuner
    
  3. TensorFlow,Keras,MatplotLib, Python 用 opencv-python のインストール

    *pip install」は,Pythonのライブラリをインストールするためのコマンド.

    * libgl1libglib2.0-0t64 は,opencv-python の import 時に必要な共有ライブラリである.

    python -m pip install -U pip setuptools
    sudo apt -y install libgl1 libglib2.0-0t64
    python -m pip install -U tensorflow keras keras-tuner tensorflow_datasets tensorflow-hub numpy pillow pydot matplotlib seaborn pandas scipy scikit-learn opencv-python opencv-contrib-python
    

    NVIDIA GPU を使用する場合は,CUDA 関連のライブラリを同時に導入する次のコマンドでインストールする.

    python -m pip install -U "tensorflow[and-cuda]"
    
  4. Python の numpy がインストールできたことの確認
    バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
    python -c "import numpy; print( numpy.__version__ )"
    
  5. TensorFlow のバージョン確認
    バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
    python -c "import tensorflow as tf; print( tf.__version__ )"
    
  6. Kerasバージョン確認
    バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
    python -c "import keras; print( keras.__version__ )"
    
  7. このあと、TensorFlow からGPU が認識できているかの確認
    python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
    

    実行結果に「PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')」のような表示があれば,GPU が認識できている.空のリスト [] が表示された場合は,GPU は使用されず CPU で実行される.

各種パッケージのインストール

  1. 「pyenv shell の実行」

    次のように実行する.

    pyenv shell 3.13.5
    
  2. インストール操作
    python -m pip install -U pip setuptools
    python -m pip install -U numpy scipy h5py scikit-learn scikit-image seaborn pandas pillow pytest cython bokeh statsmodels plotly sympy csvkit docopt pyproj flake8 protobuf beautifulsoup4 html5lib rope wrapt cffi wheel six sphinx bottleneck pygments numexpr xlrd xlsxwriter lxml graphviz pydot flask django redis pylint PyOpenGL PyOpenGL-accelerate msgpack matplotlib-venn pyglet pygame bottle rtree shapely fiona geopandas geopy geographiclib requests \
    pandasql pyyaml pymc holoviews pandas-bokeh mecab-python3 unidic-lite firebase-admin google-cloud-vision gensim scikit-video pycaret
    
  3. GDAL の Python バインディングのインストール

    GDAL の Python パッケージは,システムにインストールされた GDAL 本体とバージョンを一致させる必要がある.

    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install libgdal-dev
    python -m pip install -U "gdal==$(gdal-config --version)"
    

SWIG を使ってみる

SWIG は,C や C++ のプログラムを Python から呼び出せるようにするためのツールである.

  1. SWIG のインストール (Install swig)
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install swig
    
  2. setuptools のインストール

    Python 3.12 で標準ライブラリの distutils が削除された.拡張モジュールのビルドには setuptools を使用する.

    pyenv shell 3.13.5
    python -m pip install -U setuptools
    
  3. プログラムファイルの作成

    https://www.swig.org/Doc4.0/Python.html#Python_nn6 に記載のサンプルプログラム

    • example.i
      %module example
      
      %{
      #define SWIG_FILE_WITH_INIT
      #include "example.h"
      %}
      
      int fact(int n);
      
    • example.c
      #include "example.h"
      
      int fact(int n) {
          if (n < 0){ /* This should probably return an error, but this is simpler */
              return 0;
          }
          if (n == 0) {
              return 1;
          }
          else {
              /* testing for overflow would be a good idea here */
              return n * fact(n-1);
          }
      }
      
    • example.h
      int fact(int n);
      
    • setup.py
      #!/usr/bin/env python
      
      """
      setup.py file for SWIG example
      """
      
      from setuptools import setup, Extension
      
      
      example_module = Extension('_example',
                                 sources=['example_wrap.c', 'example.c'],
                                 )
      
      setup (name = 'example',
             version = '0.1',
             author      = "SWIG Docs",
             description = """Simple swig example from docs""",
             ext_modules = [example_module],
             py_modules = ["example"],
             )
      
  4. プログラムファイルから、Python で実行可能にするためのファイルを作る
    swig -python example.i
    python setup.py build_ext --inplace
    ls -la example.* build
    
  5. python 処理系を起動し、次のプログラムを試してみる
    python
    import example
    example.fact(4)
    exit()
    

性能の確認

行列の積, 主成分分析, SVD, k-Means クラスタリングを実行し,性能を確認する.実行時間は,CPU や numpy がリンクしている BLAS の実装によって変化する.

  1. まず,前準備として,次のコマンドを実行
    pyenv shell 3.13.5
    python -m pip install -U numpy scikit-learn
    
  2. 性能の確認のため,次の Python プログラムを実行
    import time
    import numpy
    import numpy.linalg
    import sklearn.decomposition
    import sklearn.cluster
    X = numpy.random.rand(2000, 2000)
    Y = numpy.random.rand(2000, 2000)
    # matrix product
    a = time.time(); Z = numpy.dot(X, Y); print(time.time() - a)
    # pca
    pca = sklearn.decomposition.PCA(n_components = 2)
    a = time.time(); pca.fit(X); X_pca = pca.transform(X); print(time.time() - a)
    # SVD
    a = time.time(); U, S, V = numpy.linalg.svd(X); print(time.time() - a)
    # k-means
    a = time.time()
    kmeans_model = sklearn.cluster.KMeans(n_clusters=10, n_init=10, random_state=10).fit(X)
    labels = kmeans_model.labels_
    print(time.time() - a)
    

    実行結果の例

    • 行列の積: 0.07 秒
    • 主成分分析: 0.10 秒
    • SVD: 2.49 秒
    • k-Means クラスタリング: 3.95 秒