【Ubuntu20】pyenvとpipenvをインストールする

ネコニウム研究所

PCを利用したモノづくりに関連する情報を掲載するブログ

【Ubuntu20】pyenvとpipenvをインストールする

2021-12-15 |

Ubuntu 20 に pyenv と pipenv をインストールして Python でごにょごにょしたい!

pyenv と pipenv を使用してプロジェクト作成し、Hello world をコンソールに出力するまでの手順になります。

環境

  • Ubuntu 20.04.3 LTS
  • git version 2.25.1
  • pyenv 2.2.2-10-g943c5f99

手順書

下準備、pyenv 編、pipenv 編の 3 部構成でお届けします。

下準備

Git をインストールする

まず Git が入ってなければ入れるのだ!

sudo apt install git

pyenv 編

pyenv をインストールする

github からクローンする。

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

pyenv をメイクする。

cd ~/.pyenv && src/configure && make -C src

環境変数を設定する

home/<username>/.profile に下記を追記する。home/<username>/.bash_profile ではないので注意!

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
export PIPENV_VENV_IN_PROJECT=true
eval "$(pyenv init --path)"

export PIPENV_VENV_IN_PROJECT=true は、オプションなんだけど、このオプションを設定しておくとこの後 pipenv でプロジェクトを作る際に Python 関連の仮想環境のファイルがプロジェクトのディレクトリ内に作成されるようになる。
開発環境の管理が楽になるので、個人的にはデフォルトでこの設定にして欲しいくらいオススメです。

home/<username>/.bashrc に下記を追記する。

eval "$(pyenv init -)"

bash で追記する場合は下記のコマンドを実行する。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'export PIPENV_VENV_IN_PROJECT=true' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

追記後、下記のコマンドを実行して追記した内容を反映させる。

source ~/.profile
source ~/.bashrc

pyenv のバージョンを確認する

下記のコマンドを実行し、pyenv のバージョンが表示されれば OK だ!

pyenv --version

Python をインストールする

下記のコマンドを実行すると pyenv にインストールできる Python のバージョンのリストが表示される。

pyenv install --list

お試しに今回は 3.10.1 をインストールしてみる。
下記のコマンドを実行する。

pyenv install 3.10.1

インストール完了までしばらく待つ。

インストールが終わったら、下記のコマンドを実行して、pyenv にインストールされてる Python のバージョンのリストを確認する。

pyenv install --list

使用する Python のバージョンを指定する

下記のコマンドでシェル(bash など)で使う Python のバージョンを指定できる。

pyenv shell 3.10.1

下記のコマンドでグローバル(デフォルト)で使う Python のバージョンを指定できる。

pyenv global 3.10.1

下記のコマンドでローカル(現在のディレクトリ以下)で使う Python のバージョンを指定できる。

pyenv local 3.10.1

コマンドを実行するとそのディレクトリに使う Python のバージョンが記述された .python-version というファイルが作成される。

優先順序は、local、shell、global の順となってる。

補足 : pyenv をバージョンアップする

下記のコマンドを実行すると pyenv 自身をバージョンアップできる。

cd ${PYENV_ROOT}
git pull
make -C src

pipenv 編

プロジェクト用のディレクトリを作成する

下記のコマンドを実行して、プロジェクト用のディレクトリを作成し、ディレクトリの中に移動する。今回はディレクトリ名を pyenv_test とした。

mkdir pyenv_test
cd pyenv_test

python のバージョンを設定する

下記のコマンドを実行して、pyenv_test 下で使用する python のバージョンを設定する。

pyenv local 3.10.1

Python のバージョンが設定したバージョンに変わってるか確認する。

python --version

pipenv をインストールする

下記のコマンドを実行して、pip 自身をアップグレードした後、pipenvをインストールする。

pip install --upgrade pip
pip install pipenv

インストールが完了したら、pipenv のバージョンを確認しておく。

pipenv --version

プロジェクトを作成する

下記のコマンドを実行して、プロジェクトを作成する。

pipenv --python 3.10.1

作成するとプロジェクトのディレクトリに Pipfile というファイルが作成される。このファイルの中にパッケージやスクリプトが保管されていく。

必要なパッケージをインストールする

下記のコマンドを実行すると numpy というパッケージがインストールされる

pipenv install numpy

開発用としてパッケージをインストールするには、下記のように --dev オプションを指定する。

pipenv install --dev numpy

必要なパッケージが明記された requirements.txt が用意されてる場合は、下記のコマンドで必要なパッケージを一括インストールできる。

pipenv install -r ./requirements.txt

既に Pipfile に必要なパッケージが明記されル場合には、下記のコマンドで必要なパッケージを一括インストールできる。

pipenv install

下記のコマンドでは、Pipfile に明記されてる開発用のパッケージを一括インストールできる。

pipenv install --dev

プログラムを書く

テストとして Hello world を出力するだけのプログラムを作成し、pipenv 経由で実行してみる。

今回は、test.py というファイルにプログラムを書く。下記コマンドで test.py を作成する。

touch test.py

test.py の中身は下記のとおり。

print('Hello world')

プログラムを実行するスクリプトを書く

先程用意した test.py を実行するスクリプトを Pipfile に書く。
内容は下記のとおり。

[scripts]
start = "python test.py"

プログラムを実行する

下記のコマンドを実行すると pipenv 経由で test.py が実行される。

pipenv run start

ちゃんと Hello world と出力されれば OK だ!

以上です。

補足

プロジェクトの仮想環境を削除する

何かしらの問題が発生したためにパッケージなどをインストールし直したい時に使う。けっこうある。

pipenv --rm

プロジェクトのパッケージを更新する

何かしらの問題が発生したためにパッケージなどをインストールし直したい時に使う。けっこうある。

pipenv update

パージョンを指定してパッケージをインストールする

pipenv install torch==1.8.0

まとめ(感想文)

過去に当時のバージョンで環境構築したことがあったんですが、ほぼ全部忘れてました…。
私が知らなかっただけかもですが、その時、export PIPENV_VENV_IN_PROJECT=true なんてステキなオプションは無かったような気が!

それとこれは賛否ありそうですが、Python とか Node.js とか Ruby とかの開発環境は、Linux で構築した方がトラブルが少ないような気がします。Windows とか Mac だと特にパッケージ関連のトラブルによく出くわす感じが!!(私のやり方がまずいのかも?!)

引用・参考文献