システム Python とは別に Python をインストール(pyenv を使用)(Ubuntu 上)
ここで行うこと.
pyenv をインストールする.pyenv の配下に Python 3.13 をインストールする(同じ手順で Python 3.12, Python 3.11 など複数のバージョンを並行してインストールできる).
* このページの手順は,Ubuntu 24.04 LTS と, WSL 2 上の Ubuntu 24.04 LTS を前提に記述している.
【目次】
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now
pyenv のインストールと設定
pyenv のインストール
pyenv は,複数バージョンの Python のインストールと切り替えを行うソフトウェアである.pyenv は Python をソースコードからビルドしてインストールするため、ビルドに必要な開発用ライブラリをあらかじめ導入しておく.
- ビルドに必要なライブラリのインストール
端末で,次のコマンドを実行する.
# パッケージリストの情報を更新 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 - いまインストールされている pyenv の消去
次のコマンドは
~/.pyenvを削除する.pyenv 配下にインストール済みの Python とパッケージも同時に消えるため、既存の環境を使い続ける場合はこの操作を行わない.rm -rf ~/.pyenv
- pyenv のダウンロードと更新
src/configureとmake -C srcは,シェル用の高速化拡張をビルドするための操作である(必須ではない).cd /tmp git clone https://github.com/pyenv/pyenv.git ~/.pyenv cd ~/.pyenv git pull src/configure make -C src
- 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 を使用)
- 新しく端末を開く
- システム python のバージョンを確認してみる
which python3 python3 --version
- インストールできる Python のバージョンの確認
pyenv rehash pyenv install -l
- インストールできる Python 3.13 のバージョンの確認
pyenv install -l | grep 3.13 - Python 3.13.5 のインストール
以下では 3.13.5 を例とする.上のコマンドで表示された中から最新の 3.13 系のバージョン番号を指定してもよい.その場合は、以降のコマンドのバージョン番号も同じものに読み替える.
pyenv install 3.13.5
- 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 - 試しに Python 3.13.5 を起動してみる
pyenv shell 3.13.5 python --version python print(1 + 2) exit()
「pyenv shell ・・・」でうまく Python のバージョンが切り替わらない場合には「source ~/.bashrc」を実行してから,もう一度上を試す
pyenv の確認
- 新しく端末を開く
- ~/.pyenv/versions ディレクトリ
pyenv 配下にインストールされた Python は,このディレクトリの下に,バージョンごとに分かれて置かれる.
ls ~/.pyenv/versions
- インストールされている Python のバージョンの一覧
pyenv versions - 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
TensorFlow,Keras,MatplotLib, Python 用 opencv-python のインストール(Ubuntu 上)
TensorFlow 2.16 以降の Keras は Keras 3 である.TensorFlow が対応する Python のバージョンは,リリースごとに変わるため,TensorFlow 公式のインストール手順で確認する.
- 「pyenv shell の実行」
次のように実行する.
pyenv shell 3.13.5 - パッケージのアンインストール操作
* 依存関係の競合を避けるために,次の操作でアンインストールを行っておく.
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 - TensorFlow,Keras,MatplotLib, Python 用 opencv-python のインストール
* 「pip install」は,Pythonのライブラリをインストールするためのコマンド.
*
libgl1とlibglib2.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-pythonNVIDIA GPU を使用する場合は,CUDA 関連のライブラリを同時に導入する次のコマンドでインストールする.
python -m pip install -U "tensorflow[and-cuda]" - Python の numpy がインストールできたことの確認
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python -c "import numpy; print( numpy.__version__ )"
- TensorFlow のバージョン確認
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python -c "import tensorflow as tf; print( tf.__version__ )"
- Keras のバージョン確認
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python -c "import keras; print( keras.__version__ )"
- このあと、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 で実行される.
各種パッケージのインストール
- 「pyenv shell の実行」
次のように実行する.
pyenv shell 3.13.5 - インストール操作
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 - 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 から呼び出せるようにするためのツールである.
- SWIG のインストール (Install swig)
# パッケージリストの情報を更新 sudo apt update sudo apt -y install swig
- setuptools のインストール
Python 3.12 で標準ライブラリの
distutilsが削除された.拡張モジュールのビルドには setuptools を使用する.pyenv shell 3.13.5 python -m pip install -U setuptools - プログラムファイルの作成
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"], )
- example.i
- プログラムファイルから、Python で実行可能にするためのファイルを作る
swig -python example.i python setup.py build_ext --inplace ls -la example.* build
- python 処理系を起動し、次のプログラムを試してみる
python import example example.fact(4) exit()
性能の確認
行列の積, 主成分分析, SVD, k-Means クラスタリングを実行し,性能を確認する.実行時間は,CPU や numpy がリンクしている BLAS の実装によって変化する.
- まず,前準備として,次のコマンドを実行
pyenv shell 3.13.5 python -m pip install -U numpy scikit-learn - 性能の確認のため,次の 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 秒