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_test
1.下記のコマンドを実行して、
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.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だと特にパッケージ関連のトラブルによく出くわす感じが!!(私のやり方がまずいのかも?!)
引用・参考文献
下記を参考にさせていただきました。ありがとうございました。