virtualenv, virtualenvwrapper の使用法(Ubuntu 上)
|
|
金子邦彦研究室: データベース、人工知能(AI)、データサイエンスの融合により不可能を可能にする |
このページは Ubuntu 24.04 LTS(システム Python は Python 3.12)および Ubuntu 26.04 LTS(システム Python は Python 3.14)を対象とする。
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティ更新やバグ修正を含めて更新するためである。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行
# sudo shutdown -r now
Python3 開発用ファイル,pip, venv のインストール(Ubuntu 上)
Python 本体のインストールは行わない(Ubuntu のシステム Python を用いる。Ubuntu 24.04 では Python 3.12、Ubuntu 26.04 では Python 3.14 である)。
- python3 (Ubuntu のシステム Python)
- pip3 (pip)
Ubuntu 24.04 以降のシステム Python は PEP 668 により外部管理環境(externally-managed-environment)として保護されており,sudo pip3 install によるシステム全体へのインストールはエラーとなる。Python パッケージのインストールは,このページで説明するPython 仮想環境の中で行う。
Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページ »で説明
Python3 開発用ファイル,pip, venv のインストール
端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python-is-python3 python3-dev python3-pip python3-setuptools python3-venv build-essential
Python を使ってみる
行列の積, 主成分分析, SVD, k-Means クラスタリングを実行し,動作と所要時間を確認する.
まず,必要なパッケージ(NumPy, scikit-learn)をシステムのパッケージからインストールする。 端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python3-numpy python3-sklearn
次の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, n_init=10, random_state=10).fit(X)
labels = kmeans_model.labels_
print(time.time() - a)
実行結果の例(所要時間は CPU や BLAS の実装により異なる)
- 行列の積: 0.07 秒
- 主成分分析: 0.28 秒
- SVD: 2.44 秒
- k-Means クラスタリング: 2.96 秒
virtualenv, virtualenvwrapper のインストールと設定
virtualenv は Python 仮想環境を作成するツール,virtualenvwrapper は仮想環境の作成・切り替え・削除を簡単なコマンドで行えるようにする拡張である。Ubuntu 24.04, Ubuntu 26.04 では,どちらも apt パッケージとして提供されている。
- 端末を開く
- virtualenv, virtualenvwrapper のインストール
# パッケージリストの情報を更新 sudo apt update sudo apt -y install virtualenv virtualenvwrapper
- virtualenv, virtualenvwrapper の設定
apt でインストールした場合,virtualenvwrapper の起動スクリプトは /usr/share/virtualenvwrapper/virtualenvwrapper.sh に置かれる。 次のコマンドで,現在の端末での設定と,~/.profile への設定の追加を行う。 エラーメッセージが出ていないことを確認する。
export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/share/virtualenvwrapper/virtualenvwrapper.sh touch ~/.profile echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.profile source ~/.profile
virtualenvwrapper の主なコマンド- mkvirtualenv <Python仮想環境名>: Python仮想環境の新規作成
- lsvirtualenv: Python仮想環境の一覧表示
- workon <Python仮想環境名>: Python仮想環境の有効化
- deactivate: いま有効化されているPython仮想環境の無効化
- rmvirtualenv <Python仮想環境名>: Python仮想環境の削除
Python 仮想環境の新規作成
- 新しく端末を開く
- システムの python3 のバージョンの確認
which python3 python3 --versionUbuntu 24.04 では Python 3.12、Ubuntu 26.04 では Python 3.14 と表示される。
- Python 仮想環境の新規作成
名前: myenv
使用する Python: /usr/bin/python3(システム Python)
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh mkvirtualenv --python=/usr/bin/python3 myenv
- 確認
lsvirtualenv「myenv」という新しい Python 仮想環境が作成されたことを確認する
- 確認 の続き
新しく端末を開き,次のコマンドを実行する.
「workon myenv」は、myenv の Python 仮想環境の使用を開始するためのコマンドである。 which python,which pip の結果が ~/.virtualenvs/myenv/bin の下を指していれば,仮想環境が有効になっている。
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh workon myenv which python which pip python --version
- myenv の Python 仮想環境の Python を使ってみる
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh workon myenv python print(1 + 2) exit()
- Python 仮想環境の無効化
deactivate
2つ目の Python 仮想環境の新規作成と切り替え
Python 仮想環境は複数作成でき,仮想環境ごとに異なるパッケージ構成を持たせることができる。ここでは 2 つ目の仮想環境を作成し,切り替えを確認する。
- 新しく端末を開く
- システムの python3 のバージョンの確認
which python3 python3 --version - Python 仮想環境の新規作成
- 名前: ai
- 使用する Python: /usr/bin/python3
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh mkvirtualenv --python=/usr/bin/python3 ai - 確認
lsvirtualenv「myenv」と「ai」の 2 つの Python 仮想環境があることを確認する
- 確認 の続き
新しく端末を開き,次のコマンドを実行する.
「workon ai」は、ai の Python 仮想環境の使用を開始するためのコマンドである。 which python,which pip の結果が ~/.virtualenvs/ai/bin の下を指していれば,仮想環境が有効になっている。
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh workon ai which python which pip
- 仮想環境の切り替えを確認する
workon コマンドを続けて実行すると,有効化されている仮想環境が切り替わる。
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh workon myenv which python workon ai which python deactivate
- 不要になった仮想環境の削除(実行は任意)
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh rmvirtualenv ai lsvirtualenv
virtualenv, virtualenvwrapper の確認
- ~/.virtualenvs ディレクトリ
仮想環境の実体は WORKON_HOME で指定したディレクトリ(既定では ~/.virtualenvs)に作成される。
ls ~/.virtualenvs
- 仮想環境ごとに pip が用意される
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh workon myenv which python which pip
- 仮想環境ごとにパッケージが管理される
仮想環境の中の pip でインストールしたパッケージは,その仮想環境の中だけで有効である。sudo は付けない。
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh workon myenv pip install numpy pip list
- システム Python のパッケージとの分離の確認
deactivate pip3 list
Spyder のインストール(Python 仮想環境内)
Spyder を Python 仮想環境にインストールする。手順は公式の案内 https://docs.spyder-ide.org/current/installation.html に従う。
- インストール先のPython の仮想環境を有効化する
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh workon myenv - インストール操作
仮想環境の中の pip を使うため,sudo は付けない。
pip install -U pip setuptools wheel pip install -U spyder - 起動の確認
spyder
Python 仮想環境で SWIG を使ってみる
SWIG は,C/C++ で書いた関数を Python から呼び出せるようにするためのラッパー生成ツールである。
- SWIG のインストール
# パッケージリストの情報を更新 sudo apt update sudo apt -y install swig build-essential python3-dev - プログラムファイルの作成
SWIG のドキュメント https://www.swig.org/Doc4.0/Python.html に記載のサンプルプログラムを用いる。
- example.i
%module example %{ #include "example.h" %} int fact(int n); - example.c
#include "example.h" int fact(int n) { if (n < 0){ /* エラーを返すべきだが、ここでは簡単のため 0 を返す */ return 0; } if (n == 0) { return 1; } else { return n * fact(n-1); } } - example.h
int fact(int n); - setup.py
distutils は Python 3.12 で標準ライブラリから削除されたため,setuptools を用いる。
#!/usr/bin/env python3 """ 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 で実行可能にするためのファイルを作る
4 つのファイルを置いたディレクトリで,次のように操作する。仮想環境の中でビルドするため,sudo は付けない。
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh workon myenv pip install -U setuptools swig -python example.i python3 setup.py build_ext --inplace ls -la example.* build
- python 処理系を起動し、次のプログラムを実行して動作を確認する
import example example.fact(4) exit()