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 (コアダンプ)回避方法を探求します。


  • Illegal instruction (コアダンプ) 回避続編 に進む
  • 70VPS に戻る