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

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

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

2021-12-15 | , , ,

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

概要

この記事では、Ubuntu20にpyenvとpipenvをインストール後、プロジェクト作成してHello worldをコンソールに出力するまでの手順を掲載する。

仕様書

環境

  • Ubuntu 20.04.3 LTS
  • git version 2.25.1
  • pyenv 2.2.5-11-gf0f2cdd1

手順書

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

下準備編

  1. まずGitが入ってなければ入れるのだ!
    sudo apt install git
  2. 「pyenv」と「Python」のインストールに必要なパッケージをインストールするのだ!
    sudo apt install build-essential libssl-dev libbz2-dev libreadline-dev libsqlite3-dev zlib1g-dev libffi-dev

pyenv編

  1. pyenvをgithubからクローンする。
    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
  2. pyenvをメイクする。
    cd ~/.pyenv
    src/configure
    make -C src
  3. home/<username>/.bashrc に下記を追記する。
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    export PIPENV_VENV_IN_PROJECT=true
    eval "$(pyenv init --path)"
    eval "$(pyenv init -)"

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

    sudo echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    sudo echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    sudo echo 'export PIPENV_VENV_IN_PROJECT=true' >> ~/.bashrc
    sudo echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
    sudo echo 'eval "$(pyenv init -)"' >> ~/.bashrc
  4. 追記後、下記のコマンドを実行して追記した内容を反映させる。
    source ~/.bashrc
  5. 下記のコマンドを実行し、pyenvのバージョンが表示されればOKだ!
    pyenv --version
  6. 下記のコマンドを実行するとpyenvにインストールできるPythonのバージョンのリストが表示される。
    pyenv install --list
  7. 今回は3.10.1をインストールする。
    pyenv install 3.10.1

    インストール完了まで時間がかかるのでしばらく待つ。

  8. インストール完了後、pyenvにインストールされたPythonのバージョンのリストを確認する。
    pyenv versions
  9. 先程インストールした3.10.1をグローバルに設定する。
    pyenv global 3.10.1
    pyenv rehash
  10. 下記のコマンドを実行して有効になってる「Python」のバージョンを確認する。
    python --version

pipenv編

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

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

    pyenv local 3.10.1
  2. Pythonのバージョンが設定したバージョンに変わってるか確認する。
    python --version
  3. pipenvをインストールする
    下記のコマンドを実行して、pip自身をアップグレードした後、pipenvをインストールする。

    pip install --upgrade pip
    pip install pipenv
  4. インストールが完了したら、pipenvのバージョンを確認しておく。
    pipenv --version
  5. 下記のコマンドを実行して、プロジェクトを作成する。
    pipenv --python 3.10.1

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

  6. テストとしてHello worldを出力するだけのプログラムを作成し、pipenv経由で実行してみる。今回は、test.pyというファイルにプログラムを書く。下記コマンドでtest.pyを作成する。
    touch test.py
  7. test.pyの中身は下記のとおり。
    print('Hello world')
  8. 先程用意したtest.pyを実行するスクリプトをPipfileに書く。
    内容は下記のとおり。

    [scripts]
    start = "python test.py"
  9. 下記のコマンドを実行すると pipenv経由でtest.pyが実行される。
    pipenv run start
  10. ちゃんとHello worldと出力されればOKだ!

補足

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

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

pyenv shell 3.10.1
pyenv rehash

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

pyenv global 3.10.1
pyenv rehash

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

pyenv local 3.10.1

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

使用されるPythonのバージョンの優先順序は、local、shell、globalで設定した順となってる。

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

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

cd ${PYENV_ROOT}
git pull
make -C src
pipenvでライブラリのインストール

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

pipenv install numpy

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

pipenv install --dev numpy

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

pipenv install -r ./requirements.txt

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

pipenv install

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

pipenv install --dev
pipenvでプロジェクトの仮想環境を削除する

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

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

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

pipenv update
pipenvでパージョンを指定してパッケージをインストールする
pipenv install torch==1.8.0

まとめ(感想文)

Djangoとかも入れていろいろ開発すれば良いじゃん!

ちなみに下記の記事の環境で動作確認してるよ!

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

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

引用・参考文献

下記を参考にさせていただきました。ありがとうございました。