金子邦彦研究室インストールUbuntu, WSL2システム Python とは別に Python をインストール(pyenv を使用)(Ubuntu 上)

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

pyenvは,システム Python とは別の Python をインストールするのに便利なツールである.

Python の仮想環境の作成と利用が簡単にできる機能もある.

ここで行うこと.

pyenv をインストールする.pyenv の配下に Python 3.8, Python 3.7, Python 3.6 をインストールする.

※ このページの手順は,普通の Ubuntu 20.04 と, WSL 2 上の Ubuntu 20.04 の両方で確認済み.

目次

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

前準備

Ubuntu のシステム更新

UbuntuUbuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.

UbuntuUbuntu のインストールは別ページ »で説明

sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now

pyenv のインストールと設定

pyenv のインストール

pyenv は Python のインストールが簡単にできる機能などを持つソフトウェア.

  1. いまインストールされている pyenv の消去
    rm -rf ~/.pyenv
    

    [image]
  2. pyenv のダウンロードと更新
    cd /tmp
    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    cd ~/.pyenv
    git pull
    src/configure 
    make -C src
    

    [image]
  3. pyenv の設定
    echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.profile
    echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.profile
    echo '    export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.profile
    echo '    eval "$(pyenv init --path)"' >> ~/.profile
    echo 'fi' >> ~/.profile
    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.profile
    exec $SHELL -l
    source ~/.profile
    

    [image]
  4. 関係するライブラリのインストール
    sudo apt -y update
    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
    

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

  1. 新しく端末を開く
  2. システム python のバージョンを確認してみる

    Ubuntu 20.04 の場合

    which python3
    python3 --version 
    

    [image]

    WSL 2 上の Ubuntu 20.04 の場合

    which python3
    python3 --version 
    
  3. インストールするPython のバージョンの確認
    pyenv rehash 
    pyenv install -l 
    

    [image]
  4. インストールできる Python 3.8 のバージョンの確認
    pyenv install -l | grep 3.8
    
  5. Python 3.8.7 のインストール
    pyenv install 3.8.7
    

    [image]
  6. pip, setuptools のインストール

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

    [image]

    Python の切り替えは次のようなコマンドで行う.

    • pyenv shell system
    • pyenv shell 3.8.7

    デフォルトで pyenv 配下の Python 3.8.7 を使いたいときは, 次のように設定する

    echo 'pyenv shell 3.8.7' >> ~/.bashrc
    exec $SHELL -l
    
  7. 試しに Python 3.8.7 を起動してみる
    pyenv shell 3.8.7
    python --version
    python
    print(1 + 2)
    exit()
    

    [image]

    「pyenv shell ・・・」でうまく Python のバージョンが切り替わらない場合には「source ~/.bashrc」を実行してから,もう一度上を試す

pyenv の確認

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

    [image]
  3. pyenv により、pip と easy_install も設定される
    which pip
    which easy_install
    

    [image]
  4. Python のパッケージも同時にインストールされる
    pyenv shell 3.8.7
    which pip
    pip list
    

    [image]

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

pip と setuptools の更新

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

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

次のように実行する.

pyenv shell 3.8.7
python -m pip install -U jupyterlab jupyter jupyter-console jupytext nteract_on_jupyter spyder

JupyterLab の起動は,「pyenv shell <バージョン>; jupyter lab」. Jupyter Qt Console の起動は,「pyenv shell <バージョン>; jupyter qtconsole」.

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

  1. 「pyenv shell の実行」

    次のように実行する.

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

    ※ トラブルの可能性を減らすために,次の操作でアンインストールを行っておく.

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

    ※ 「pip3 install」は,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==2.10.1 tf_slim tensorflow_datasets==4.8.3 tensorflow-hub keras keras-tuner keras-visualizer
     numpy pillow pydot matplotlib seaborn pandas scipy scikit-learn scikit-learn-intelex opencv-python opencv-contrib-python
    python -m pip install git+https://github.com/tensorflow/docs
    python -m pip install git+https://github.com/tensorflow/examples.git
    python -m pip install git+https://www.github.com/keras-team/keras-contrib.git
    
  4. Python の numpy がインストールできたことの確認

    バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.

    python -c "import numpy; print( numpy.__version__ )"
    

    [image]
  5. TensorFlow のバージョン確認

    バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.

    python -c "import tensorflow as tf; print( tf.__version__ )"
    

    [image]
  6. Kerasバージョン確認

    バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.

    python -c "import keras; print( keras.__version__ )"
    

    [image]
  7. このあと、TensorFlow からGPU が認識できているかの確認

    python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
    

    実行結果の中に,次のように「device_type: "GPU"」があれば,GPUが認識できている.エラーメッセージが出ていないことを確認しておくこと.

    [image]

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

  1. 「pyenv shell の実行」

    次のように実行する.

    pyenv shell 3.8.7
    
  2. インストール操作

    sudo apt -y update
    sudo apt -y install libmecab-dev
    source ~/py38/bin/activate
    python -m pip install -U pip setuptools
    python -m pip install -U  numpy scipy h5py scikit-learn scikit-learn-intelex scikit-image seaborn pandas pillow pytest cython bokeh statsmodels plotly sympy csvkit docopt pyproj flake8 protobuf bs4 html5lib rope wrapt cffi wheel six sphinx bottleneck pygments numexpr xlrd xlsxwriter lxml graphviz pydot flask django redis pylint bz2file PyOpenGL PyOpenGL-accelerate    msgpack mecab ggplot matplotlib-venn pyglet pygame cocos2d bottle rtree shapely fiona geopandas geopy geographiclib requests \
    pandasql pyyaml bokeh pymc3 mkl mkl-include holoviews pandas-bokeh ggplot prettyplotlib pybrain3 firebase-admin googletrans google-cloud-vision gpyocr azure-cognitiveservices-vision-computervision gensim gloo scikit-video scikits.datasmooth scikits.example scikits.fitting scikits.optimization scikits.vectorplot zodb gdata pyr2 pycaret
    python -m pip install -U  gdal
    

SWIG を使ってみる

  1. SWIG のインストール (Install swig)
    sudo apt -y update
    sudo apt -y install swig
    

    [image]
  2. プログラムファイルの作成

    http://www.swig.org/Doc1.3/Python.html#Python_nn6 に記載のサンプルプログラム

  3. プログラムファイルから、Python で実行可能にするためのファイルを作る
    swig -python example.i
    python setup.py build_ext --inplace
    ls -la example.* build 
    

    [image]
  4. python 処理系を起動し、次のプログラムを試してみる
    import example
    example.fact(4)
    exit()
    

    [image]

性能の確認

行列の積, 主成分分析, SVD, k-Means クラスタリングを実行し,性能を確認する.

Python 3.6 での実行結果を示す.

  1. まず,前準備として,次のコマンドを実行
    pyenv shell 3.6.12
    python -m pip install -U numpy scikit-learn scikit-learn-intelex
    
  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, random_state=10).fit(X)
    labels = kmeans_model.labels_
    print(time.time() - a)
    

    実行結果の例

    [image]