🐍

pyenv/pyenv-virtualenv/MiniForgeを使ったLinuxのPython環境構築

2021/10/04に公開

はじめに(LinuxのPython環境構築)

この記事では、pyenv/pyenv-virtualenv/miniforgeを使ったLinuxでのPython環境構築に関して説明します。

「これがオススメ!」とか「2021年決定版」みたいな記事ではありません。ビジネスで使う人も想定してなくて「とりあえずデモをローカル環境で最短で動かしたい!」というホビーユース向け記事です。

「今更pyenv?プププ」と思っている人も多いでしょう。私自身、Docker使ったり、Apple Silicon MacでTensorFlow動かすためにMiniForgeを入れたりと紆余曲折を経て、いつの間にかpyenvに戻って来てしまいました。

「何故こんなことに…」という感じなのですが、戻ってきてしまったものは仕方ないです。なんだかんだで、ローカル環境で手軽にAI関係のカメラ関係のデモをパパっと動かすとき、pyenv/pyenv-virtualenv/MiniForgeの組み合わせは有用なんじゃないかと思います。

pyenvに関しては、昔以下のような記事も書いたのですが、改めてLinuxに特化して使い方などを書きたいと思います(Macの方はApple Siliconでの環境構築に疲れたので一時休止です)。

https://karaage.hatenadiary.jp/entry/2016/04/04/073000

Dockerで環境構築したい(ディープラーニング含めて)という人は、以下記事参照ください。
https://qiita.com/karaage0703/items/e79a8ad2f57abc6872aa

Pythonのパッケージ管理ソフトの歴史的背景を知りたいという方は、@vaaaaanquish さんの以下記事が参考になると思います。
https://vaaaaaanquish.hatenablog.com/entry/2021/03/29/221715

pyenv/pyenv-virtualenv セットアップ

Linux(Ubuntu)マシンの前提です。PC自体のハードウェア情報や、基本的なOSのセットアップ方法は以下記事参照ください。

https://zenn.dev/karaage0703/articles/0ca67e19aa772e

Ubuntuをセットアップしたら、以下コマンドでgitcurlをインストールしましょう(入っていればここは飛ばしてOKです)。

$ sudo apt update
$ sudo apt -y install git
$ sudo apt -y install curl

続いて、以下コマンドを実行すればセットアップできます。

$ curl -s https://raw.githubusercontent.com/karaage0703/ubuntu-setup/master/install-pyenv.sh | /bin/bash

スクリプトで何をしているかは、スクリプトの中身や以下記事を参照ください(基本的に以下記事のセットアップ手順をスクリプト化しただけです)。

https://karaage.hatenadiary.jp/entry/2016/04/04/073000

pyenvの使い方

早速pyenvを使っていきましょう。以下pyenvのコマンドでインストールできるPythonのバージョン(パッケージ)のリストを表示します。

$ pyenv install -l

リストの中から、好きなPython環境をインストールしましょう。例えば Python3.8.12なら以下です。

$ pyenv install 3.8.12

インストールが完了したら、仮想環境に入りましょう。インストールされている環境の一覧はpyenv versionsで以下のように表示できます。先程インストールした 3.8.12が表示されていますね。

$ pyenv versions
* system (set by /home/karaage/.pyenv/version)
  3.8.12

環境を切り替えたい場合は、以下のようにコマンドで指定します。

$ pyenv global 3.8.12

ディレクトリ(フォルダ)を限定して環境を切り替えたい場合は、以下のようにglobalの代わりにlocalを使います。

$ pyenv local 3.8.12

こうすると指定したディレクトリから抜けるとglobalで指定した環境に自動的に切り替わり、再度指定したディレクトリに移動すると、localで指定した環境に切り替わります。

pyenv-virtualenvの使い方

同じPythonのバージョンでさらにバージョンを分けたい場合は、pyenv-virtualenvで以下のように仮想環境をどんどんつくって切り替えることができます。

私は、基本的にこうやってどんどん使い捨ての仮想環境を作っています。

$ pyenv install 3.8.12
$ pyenv virtualenv 3.8.12 test
$ pyenv global 3.8.12/envs/test

pyenvでのMiniForgeのセットアップ

PythonのパッケージツールとしてAnacondaを好む人もいると思います。Anacondaは邪道(使うな)という人もいますが、ここではその議論は置いておきます(詳しくは冒頭でリンクした歴史的経緯のページなどを参照ください)。

個人的には使いたければ、便利なものは使えば良いかと思います。ただ、Anacondaは商用だと有償化していたりします。個人向けには同じくAnaconda系のMiniForgeが良いのではないかと思います。ちなみに、私はApple Silicon MacでMiniForgeを使わないとTensorFlowを動かせなかったりするので、Macと手順を共通化するためにMiniForgeを使ったりします。なので、Linux単体だと、個人的にはMiniForgeを使う嬉しさはそれほどないかもしれません。

MiniForge単体で使用する方法は、以下記事参照ください。
https://zenn.dev/karaage0703/articles/f3254b14898b4d

pyenvで使う場合は、以下コマンドでMiniForgeをセットアップして環境を設定します。

$ pyenv install miniforge3-4.10.1-5
$ pyenv global miniforge3-4.10.1-5

MiniForge上で仮想環境をつくる場合は、以下コマンドを使います。

$ conda create --name ml python=3.8

以下コマンドでアクティベートしましょう。

$ conda activate ml

pyenvにMiniForgeが重なるとちょっとややこしいですが、MiniForgeに切り替えたあとの操作は、基本的には単体のMiniForgeと同じです(多分)。

ライブラリのインストール方法

普通にpipで入れていけばOKです。condaに関しては省略(あんまり詳しくないのと、基本的に私はpipで入れてしまいます)。

pip install xxxみたいな入れ方は非推奨らしいので、以下のようなコマンドで入れていきます。

$ python3 -m pip install numpy

pyenvアンインストール方法

アンインストールする場合は、以下コマンドで削除しましょう。

$ rm -rf ~/.pyenv

合わせて~/.bashrcに書かれたpyenv関係の設定も削除しておきましょう。

pipenv

pipenvというものもありますが、今回は触れません。興味ある人は調べてみてください。

pyenvなどとは微妙に役割が違います(すみません、うまく説明できるほど理解していないです)。

公式が推奨しているので、最近は勧める人が多い印象です。pyenvと合わせて使うことも可能だと思います。

まとめ

pyenv/pyenv-virtualenv/MiniForgeを今更まとめてしまいました。

ちなみにPythonやAI(ディープラーニング)を初心者が学習するなら、クラウド上で環境構築無しで無料で使えるGoogle Colaboratoryをおすすめします。

https://karaage.hatenadiary.jp/entry/2018/03/21/073000

AI初学者の方は、Google Colaboratoryと合わせて、以下の書籍もおすすめです(宣伝です!)

https://karaage.hatenadiary.jp/entry/2020/12/11/073000

書籍を読めば、Google Colaboratoryで学習させた画像認識のAIモデルをカメラをつないだローカルのPC上でデモするといった使い方も可能となります。その際、pyenvといったPythonの仮想環境の構築ノウハウは強い味方になると思います。

参考リンク

https://qiita.com/EasonYo/items/bc71f013b32aa6c78502

https://qiita.com/c60evaporator/items/b6a7394231d1e768ce64

https://speakerdeck.com/os1ma/pythonno-jia-xiang-huan-jing-wowan-quan-nili-jie-siyou

https://gist.github.com/vaaaaanquish/1ad9639d77e3a5f0e9fb0e1f8134bc06

関連記事

https://karaage.hatenadiary.jp/entry/2017/12/27/073000

https://qiita.com/karaage0703/items/705f1b750c486f00d554

https://zenn.dev/karaage0703/articles/e5c0943a3ad2db

https://zenn.dev/karaage0703/books/80b6999d429abc8051bb

Discussion