Python 仮想環境を使う
仮想環境は必要?
私はここまで python パッケージを root 領域にインストールして python ファイルを実行してきました。
例えば、tensorflow の場会
yamada@********:~$ sudo pip3 install tensorflow-cpu
でインストールして、作成した ***.py を実行するみたいな感じでした。
ずっとうまくできていたのですが、
Windows11
Oracle VM VirtualBox7
ubuntu-2204-LTS
の環境では
Illegal instruction (コアダンプ)
なるエラーが発生するようになり動作しなくなりました。
いろいろ調べていくうちにどうも tensorflow パッケージは仮想環境にインストールしないと
動作しなくなったようです。
でもこれはウソでした。
とは言うものの tensorflow と python の版数を合わせておくことができる点では有意義なので
tensorflow を仮想環境に入れてみます。
仮想環境作成
仮想環境の作成方法については
Ubuntu 22.04 に venv
に行くと詳しい説明を参照することができます。
また
Ubuntu の APT で入る Python 仮想環境系のパッケージを使う
も参考になります。
まずは、現状を確認します。
yamada@********:~$ which python2
反応なし、python2 は無かったことがわかります。
yamada@********:~$ which python3
[結果]
/usr/bin/python3
python3 が入っています。
yamada@********:~$ python3 --version
[結果]
python 3.10.6
Python のバージョン確認ができました。
yamada@********:~$ which pip3
[結果]
/usr/bin/pip3
pip3 もインストールされていました。
pip3 がインストールされていなければインストールしましょう。
yamada@********:~$ sudo apt install python3-pip
やっと準備ができました。
仮想環境を入れる場所を作成する python3-venv パッケージをインストールします。
お決まりの手順で
yamada@********:~$ sudo apt update
yamada@********:~$ sudo apt upgrade
で ubuntu をアップデートします。
その後、
yamada@********:~$ sudo apt install -y python3-venv
これで、Python の標準ライブラリとして venv モジュールが使えるようになリました。
仮想環境の完成
仮想環境に住所氏名を付与します。
$ python3 -m venv <name>
の書式で仮想環境が完成します。
<name> には仮想環境の名前を入れます、これは要するに後述するディレクトリの名前にもなります。
例えば my-python という名前で環境を作るとして
$ python3 -m venv ~/my-python
とすると、
/home/yamada/my-python/
なるディレクトリができます。
そして、この中に Python の仮想環境が作られます。
yamada@********:~$ python3 -m venv ~/my-python
仮想環境の中に入る
仮想環境の中で作業をするときは
yamada@********:~$ source ~/my-python/bin/activate
このときターミナル内での表示は
(my-python) yamada@********:~$
に切り替ります。
venv 環境から抜けるには
(my-python) yamada@********: ~$ deactivate
仮想環境にパッケージをインストール
それでは仮想環境の中に TensorFlow をインストールします。
Ubuntu 22.04 LTSへのTensorFlowのインストール
に行くと詳しい説明を参照することができます。
2023年5月1日現在
TensorFlow-cpu 2.12 は Python 3.10 がサポート対象です。
tensorflow のバージョンに対応している Python3 系のバージョン調査につては
特定バージョンのtensorflowのインストールができないときの対処法
を参照してください。
作業は仮想環境の中で行います。
まず、pipとsetuptoolsを最新にしておきましょう。
(my-python) yamada@********:~$ pip list
または
(my-python) yamada@********:~$ pip3 list
結果は同じです。
Package Version
---------- -------
pip 23.1.2
setuptools 67.7.2
この二つを最新にします。
(my-python) yamada@********:~$
python -m pip install --upgrade pip setuptools
[pip3 は使用できません。
/home/yamada/my-python/bin/python: No module named pip3
となってエラーになります。]
とすると
やっと仮想環境に tensorflow をインストールできます。
(my-python) yamada@********:~$ pip install tensorflow-cpu
または
(my-python) yamada@********:~$ pip3 install tensorflow-cpu
tensorflow-gpu はインストールしません。
Oracle VM VirtualBox 下では tensorflow-gpu はインストールできないようです。
WSL 環境ではできるようです。
Windows ではない Ubuntu 単独 OS なら当然インストールできるはずです。
tensorflow-cpu がインストールできたらインストール済みのパッケージを確認します。
(my-python) yamada@********:~$ pip list
または
(my-python) yamada@********:~$ pip3 list
Package Version ----------------------- ------ absl-py 1.4.0 astunparse 1.6.3 ........ ...... keras 2.12.0 Keras-Preprocessing 1.1.2 ........ ...... Markdown 3.4.3 numpy 1.23.5 ........ ...... pip 23.1.2 ........ ...... setuptools 67.7.2 ........ ...... tensorboard 2.12.2 tensorboard-data-server 0.7.2 tensorboard-plugin-wit 1.8.1 tensorflow-cpu 2.12.0 ........ ......
たくさんのパッケージがインストールされました。
TensorFlow のインストール確認
引き続き、仮想環境に入れた tensorflow の動作確認をしていきます。
yamada@********:~$ source ~/my-python/bin/activate
仮想環境 my-python に入りました。
簡単な Python3 tensorflow ファイルを実行します。
(my-python) yamada@********:~$
python3 -c "import tensorflow as tf; hello = tf.constant('Hello World'); tf.print(hello)"
結果は
Illegal instruction (コアダンプ)
となり Illegal instruction は解消できませんでした。
でも Python 仮想環境は作成できたので'よし'とします。
ここまで、Python 仮想環境の作成方法について説明し、Illegal instruction を回避しようとしましたが
目的を達成できませんでした。
引き続き、Illegal instruction (コアダンプ)回避方法を探求します。