virtualenv, virtualenv-wrapper の使用法(Ubuntu 上)
金子邦彦研究室: データベース、人工知能(AI)、データサイエンスの融合により不可能を可能にする |
【目次】
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -yV upgrade sudo /sbin/shutdown -r now
Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)
Python のインストールは行わない(Ubuntu のシステム Python を用いる.)
Python, pip のコマンドでの起動のまとめ.
Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.
- python3 (Ubuntu のシステム Python)
- sudo pip3 (pip 3)
Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページ »で説明
Python3 開発用ファイル,pip, setuptools, venv のインストール
端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential
Python を使ってみる
行列の積, 主成分分析, SVD, k-Means クラスタリングを実行し,性能を確認する.
次のPython プログラムの実行
* Python プログラムを動かすために, Ubuntu では「python3」コマンドを使う. あるいは, PyCharmなどにある 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) # 行列の積 a = time.time(); Z = numpy.dot(X, Y); print(time.time() - a) # 主成分分析 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)
実行結果の例
- 行列の積: 0.07 秒
- 主成分分析: 0.28 秒
- SVD: 2.44 秒
- k-Means クラスタリング: 2.96 秒
virtualenv, virtualenv-wrapper のインストールと設定
- 端末を開く
- virtualenv, virtualenv-wrapper のインストール
sudo pip install -U virtualenv virtualenv-wrapper sudo pip3 install -U virtualenv virtualenv-wrapper echo -e "\n# virtualenv and virtualenv-wrapper" >> ~/.profile echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile echo "source /usr/local/bin/virtualenv-wrapper.sh" >> ~/.profile source ~/.profile
- virtualenv, virtualenv-wrapper の設定
エラーメッセージが出ていないことを確認
export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/local/bin/virtualenv-wrapper.sh touch ~/.profile echo -e "\n# virtualenv and virtualenv-wrapper" >> ~/.profile echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile echo "source /usr/local/bin/virtualenv-wrapper.sh" >> ~/.profile source ~/.profile
virtualenv-wrapper の使い方
- mkvirtualenv <Python仮想環境名>: Python仮想環境の新規作成
- workon: Python仮想環境の一覧表示
- workon <Python仮想環境名>: Python仮想環境の有効化
- deactivate: いま有効化されているPython仮想環境の無効化
virtualenv を用いて Python バージョン3 環境の新規作成
- 新しく端末を開く
- システムの python3 のバージョンの確認
which python3 python3 --version
Ubuntu 18.04 での実行結果の例
- Python バージョン3 環境の新規作成
名前: py36
使用する Python: python3
source /usr/local/bin/virtualenv-wrapper.sh mkvirtualenv --python=/usr/bin/python3 py36
- 確認
lsvirtualenv
「py36」という新しい Python 環境が作成されたことが分かる
- 確認 の続き
新しく端末を開き,次のコマンドを実行する.
「workon py36」は、py36 の Python 環境の使用を開始するためのコマンド. エラーメッセージが出なければ OK.
source /usr/local/bin/virtualenv-wrapper.sh workon py36 which python which pip
- 試しに、py36 の Python 環境の Python を使ってみる
source /usr/local/bin/virtualenv-wrapper.sh workon py36 python print(1 + 2) exit()
virtualenv を用いて Python バージョン 2 環境の新規作成
- 新しく端末を開く
- システムの python のバージョンの確認
Ubuntu 18.04 での実行結果の例
- Python 環境の新規作成
- 名前: py27
- 使用する Python: /usr/bin/python
source /usr/local/bin/virtualenv-wrapper.sh mkvirtualenv --python=/usr/bin/python py27
- 確認
lsvirtualenv
「py27」という新しい Python 環境が作成されたことが分かる
- 確認 の続き
新しく端末を開き,次のコマンドを実行する.
「workon py27」は、py27 の Python 環境の使用を開始するためのコマンド. エラーメッセージが出なければ OK.
source /usr/local/bin/virtualenv-wrapper.sh workon py27 which python which pip
- 試しに、py27 の Python 環境の Python を使ってみる
source /usr/local/bin/virtualenv-wrapper.sh workon py27 python print(1 + 2) exit()
virtualenv, virtualenv-wrapper の確認
- ~/.virtualenv ディレクトリ (~/.virtualenv directory)
ls ~/.virtualenvs
- pip と easy_install も同時に準備される
source /usr/local/bin/virtualenv-wrapper.sh workon py36 which pip which easy_install
source /usr/local/bin/virtualenv-wrapper.sh workon py27 which pip which easy_install
- Python のパッケージも同時にインストールされる (Python packages are also installed)
source /usr/local/bin/virtualenv-wrapper.sh workon py36 pip list
source /usr/local/bin/virtualenv-wrapper.sh workon py27 pip list
spyder 開発版 のインストール
spyder 開発版のインストールを行う.
https://github.com/spyder-ide/spyder に記載の手順に従う
* Python の仮想環境を有効化したいときに限る
source /usr/local/bin/virtualenv-wrapper.sh workon ai
sudo pip3 install -U PyQT5 sudo pip3 install -U git+https://github.com/spyder-ide/spyder-kernels sudo pip3 install -U git+https://github.com/spyder-ide/qtpy cd /tmp sudo git clone https://github.com/spyder-ide/spyder.git cd spyder git pull python bootstrap.py sudo python3 setup.py install
「spyder3」で、試しに起動してみる.
virtualenv の Python バージョン 3 環境で SWIG を使ってみる
- SWIG のインストール (Install swig)
sudo apt -y update sudo apt -y install swig
- プログラムファイルの作成
http://www.swig.org/Doc1.3/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 distutils.core 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 で実行可能にするためのファイルを作る
端末で次のように操作
source /usr/local/bin/virtualenv-wrapper.sh workon py36 swig -python example.i sudo python3 setup.py build_ext --inplace ls -la example.* build
- python 処理系を起動し、次のプログラムを試してみる
import example example.fact(4) exit()