たまにしかPythonを触らないと、これらが何なのか覚えられないし、毎回調べるのが手間なので書き残しておく。

まえがき


それでまあ、インターネットにはこういうのをわざわざ調べなくても良い感じにまとまってある記事が既に存在していて、下記は丁寧にまとまっているので一読しておくといいと思う。

pyenv、pyenv-virtualenv、venv、Anaconda、Pipenv。私はPipenvを使う。

この記事ではこれらの中から自分が使うもののみ、自分向けに簡単に要約する。

役割


この中から、自分が使うのはpyenv, pip, pipenvで、それらと(関連するもの)をザックリまとめるとこうなる。なお、各ツールの正確な役割を把握することへのモチベーションがわかないので正確性には掛けます。

  • pyenv -> Pythonのバージョン切り替えに使う
  • pip -> Python公式のパッケージ管理システム
  • venv -> Python公式の仮想環境管理システム
  • pipenv -> pipとvenvを合体させたやつ

venvの仮想環境管理システムの仮想環境が何なのかパッとわからなかったけど、要するにnode_modulesディレクトリみたいなものだと解釈した。そうなるとpipenvnpmみたいなものだという解釈であってると思う。

手順など


書いたところで後からやり方が変わる可能性もあるし、公式のリンクでも貼っておいたほうが良い気もするけど数年くらいは有効だと思うし残しておく。OSはUbuntu(WSL)前提で記述する。

pyenvインストール

公式: pyenv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// git cloneして放り込む
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

// シェルがbashの場合
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ exec "$SHELL" -l

// バージョン確認
$ pyenv --version
pyenv 1.2.20-7-gdd62b0d1

// Pythonのバージョン切り替え
$ pyenv local 3.8.6
$ pyenv versions
system
* 3.8.6 (set by cahsper-flask/.python-version)

pipenvインストール

pipenvpipでインストールする。間違ってもOSのパッケージ管理(apt-get install pipenv)などで入れてはいけない。(誤ってapt-getでインストールした結果1時間くらい爆散した)

1
2
3
4
5
6
$ pip install pipenv
// アップグレード
$ pip install --user --upgrade pipenv

// バージョン切り替え
$ pipenv --python 3.8.6

pipenvによるパッケージインストール

1
2
3
4
5
// 仮想環境に切り替えしておく
$ pipenv shell

// 例
$ pipenv install flask flask-sqlalchemy