CODE:LIFE

Raspberry PiPython

Raspberry Pi での Python 仮想環境構築

avatar

pyenv で Python のバージョンを自由自在に切り替える

pyenv が必要なシーンは Pythonインタプリタのバージョンを切り替えながら使いたい場合。

例えば、自分が書くPythonプログラムは3.6以降のシンタックスで書きたいが、3.5以前のプログラムをどこかから拾ってきて動かしたい場合は3.5のインタプリタが必要になる、など。

最近はめったに無いと思いうが、2.x系を利用したい場合も該当する。

github の リポジトリ からダウンロードするので 事前準備として git をインストールしておく

$ sudo apt install git -y

git がインストールできたらgithubからリポジトリを Clone

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

環境変数へ pyenv を追加

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.profile

profileの再読み込み

$ source ~/.profile

pathが通っているか確認 pyenv のpathが返ってくれば成功

$ which pyenv
/home/xxxxxx/.pyenv/bin/pyenv

Python のインストール

Python をインストールする前に 依存関係のあるパッケージを 一括インストールしておく

$ sudo apt install -y gcc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

pyenv でどのバージョンが利用可能か確認

$ pyenv install --list

バージョンを指定してインストール

$ pyenv install 3.7.6

デフォルトのインタプリタを指定

$ pyenv global 3.7.6

シェルでのインタプリタを指定

$ pyenv shell 3.7.6

その他コマンド

複数のプロジェクトを走らせるなら pipenv も入れよう

pyenv ではインタプリタのバージョンを切り替えて使えるが、パッケージの管理は含まれていない。

pipenv ではプロジェクトごとに利用するパッケージ郡を切り替えて使えるよになるツール。

例えば、プロジェクトAではパッケージの依存関係上 少し古いバージョンのパッケージを利用しなければならないが、プロジェクトBでは最新のパッケージを用いて開発したい、など。

インストールは apt brew もそれぞれ対応しており超簡単

$ sudo apt install pipenv -y

各種コマンド

詳細は↓が参考になる

新規プロジェクト立ち上げ時

~$ mkdir project1  # Projectを作成
~$ cd project1  # Projectに移動
~/project1$ pipenv install  # 仮想環境を作成
~/project1$ pipenv shell  # 仮想環境に入る

バージョン指定してプロジェクトを立ち上げる場合

$ pipenv install  --python [バージョン]

既存プロジェクトの仮想環境に入る

$ pipenv shell

仮想環境でパッケージをインストールする場合

$ pipenv install <package-name>

profile を読み込む場合

$ pipenv install