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部構成でお届けします。
下準備編
- まずGitが入ってなければ入れるのだ!
sudo apt install git
- 「pyenv」と「Python」のインストールに必要なパッケージをインストールするのだ!
sudo apt install build-essential libssl-dev libbz2-dev libreadline-dev libsqlite3-dev zlib1g-dev libffi-dev
pyenv編
- pyenvをgithubからクローンする。
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
- pyenvをメイクする。
cd ~/.pyenv src/configure make -C src
- 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
- 追記後、下記のコマンドを実行して追記した内容を反映させる。
source ~/.bashrc
- 下記のコマンドを実行し、pyenvのバージョンが表示されればOKだ!
pyenv --version
- 下記のコマンドを実行するとpyenvにインストールできるPythonのバージョンのリストが表示される。
pyenv install --list
- 今回は3.10.1をインストールする。pyenv install 3.10.1インストール完了まで時間がかかるのでしばらく待つ。 
- インストール完了後、pyenvにインストールされたPythonのバージョンのリストを確認する。
pyenv versions
- 先程インストールした3.10.1をグローバルに設定する。pyenv global 3.10.1 pyenv rehash
- 下記のコマンドを実行して有効になってる「Python」のバージョンを確認する。
python --version
pipenv編
- 下記のコマンドを実行して、プロジェクト用のディレクトリを作成し、ディレクトリの中に移動する。今回はディレクトリ名をpyenv_testとした。mkdir pyenv_test cd pyenv_test1.下記のコマンドを実行して、 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というファイルが作成される。このファイルの中にパッケージやスクリプトが保管される。
- テストとして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だ!
補足
pyenvで使用するPythonのバージョンを指定する
下記のコマンドでシェル(bash など)で使う Pythonのバージョンを指定できる。
pyenv shell 3.10.1
pyenv rehash下記のコマンドでグローバル(デフォルト)で使う Pythonのバージョンを指定できる。
pyenv global 3.10.1
pyenv rehash下記のコマンドでローカル(現在のディレクトリ以下)で使う Pythonのバージョンを指定できる。
pyenv local 3.10.1localコマンドを実行するとそのディレクトリに使うPythonのバージョンが記述された .python-version というファイルが作成される。
使用されるPythonのバージョンの優先順序は、local、shell、globalで設定した順となってる。
pyenvをバージョンアップする
下記のコマンドを実行するとpyenv自身をバージョンアップできる。
cd ${PYENV_ROOT}
git pull
make -C srcpipenvでライブラリのインストール
下記のコマンドを実行するとnumpyというパッケージがインストールされる
pipenv install numpy開発用としてパッケージをインストールするには、下記のように--devオプションを指定する。
pipenv install --dev numpy必要なパッケージが明記されたrequirements.txtが用意されてる場合は、下記のコマンドで必要なパッケージを一括インストールできる。
pipenv install -r ./requirements.txt既にPipfileに必要なパッケージが明記されてる場合には、下記のコマンドで必要なパッケージを一括インストールできる。
pipenv install下記のコマンドでは、Pipfileに明記されてる開発用のパッケージを一括インストールできる。
pipenv install --devpipenvでプロジェクトの仮想環境を削除する
何かしらの問題が発生したためにパッケージなどをインストールし直したい時に使う。けっこうある。
pipenv --rmpipenvでプロジェクトのパッケージを更新する
何かしらの問題が発生したためにパッケージなどをインストールし直したい時に使う。けっこうある。
pipenv updatepipenvでパージョンを指定してパッケージをインストールする
pipenv install torch==1.8.0まとめ(感想文)
Djangoとかも入れていろいろ開発すれば良いじゃん!
ちなみに下記の記事の環境で動作確認してるよ!
過去に当時のバージョンで環境構築したことがあったんですが、ほぼ全部忘れてました…。
私が知らなかっただけかもですが、その時、export PIPENV_VENV_IN_PROJECT=trueなんてステキなオプションは無かったような気が!
それとこれは賛否ありそうですが、PythonとかNode.jsとかRubyとかの開発環境は、Linuxで構築した方がトラブルが少ないような気がします。WindowsとかMacだと特にパッケージ関連のトラブルによく出くわす感じが!!(私のやり方がまずいのかも?!)
引用・参考文献
下記を参考にさせていただきました。ありがとうございました。

