Python
RaspberryPi
venv

ラズパイにpyenv・Python3.7.0・pip3をインストールしてvenvで仮想環境の構築!

raspberry piにはPython 2.7.13とPython 3.5.3がインストールされておりますが、最新版ではありません。

また、パッケージ管理システムのpipはプリインストールされていませんし、仮想環境の構築に必要なモジュールもありません。

これらは開発環境を整える上で重要ですので、全てインストールしてしまいましょう!

ちなみに仮想環境の構築には様々なモジュールがありますが、今回はPython公式で推奨されている「venv」を利用していきます。

参考サイト様:pyenv と pyenv-virtualenv で環境構築

Python3.7.0のインストール

# 現在のディレクトリを確認
$ pwd

/home/pi

git cloneコマンドでclone(リポジトリの複製)を行います。

git clone ○○ ~/△△

○○:githubのURL
△△:保存先

のように指定してダウンロードします

# 今回はカレントディレクトリに.pyenvというディレクトリを作成して、そこにダウンロード
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

同ディレクトリに存在する.profileに対してnanoコマンドで開いて以下を記述して、パスを通す。
記述後は「source」コマンドで再読み込みする。

$ sudo nano .profile
# .profileファイルに以下を追記
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
$ source .profile

パスが通ると「pyenv」コマンドが使えるのでPython3.7.0をインストール。
この際、すぐにインストールしようとすると下記のようなエラーがでる。

BUILD FAILED (Raspbian 9.4 using python-build 1.2.7-1-g71902168)

Inspect or clean up the working tree at /tmp/python-build.20180815100003.31236
Results logged to /tmp/python-build.20180815100003.31236.log

Last 10 log lines:
  File "/tmp/tmp99t4uw01/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/__init__.py", line 42, in <module>
  File "/tmp/tmp99t4uw01/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/cmdoptions.py", line 16, in <module>
  File "/tmp/tmp99t4uw01/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/index.py", line 25, in <module>
  File "/tmp/tmp99t4uw01/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/download.py", line 39, in <module>
  File "/tmp/tmp99t4uw01/pip-10.0.1-py2.py3-none-any.whl/pip/_internal/utils/glibc.py", line 3, in <module>
  File "/tmp/python-build.20180815100003.31236/Python-3.7.0/Lib/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
Makefile:1122: recipe for target 'install' failed
make: *** [install] Error 1

pyenvで3.7系のインストールに失敗したときのメモのサイトを参考にして「libffi-dev」を先にインストールする。

$ sudo apt install libffi-dev
$ pyenv install 3.7.0

Pythonのバージョンの切り替え

$ pyenv global 3.7.0

$ python -V
Python 3.7.0

venvで仮想環境の構築

pyenvが必要かどうかフローチャートpyenvかvenvかーPythonの仮想環境を再考するなどでは「pyenv」による仮想環境の構築は推奨されていないようでしたので、pyenvはあくまで、pythonのダウンロードだけに利用し、仮想環境の構築は「venv」にて行っていきます。

参考サイト様

そもそも仮想環境って?

そもそもPCでコマンドが使用できるのは/bin以下に使用したいコマンドのバイナリファイルがあるためです。普通に使用する分にはいわゆる普通のインストール(バイナリファイルが/bin以下に格納される)をすれば良いです。しかし/bin以下にインストールされたコマンドはシステム全体で利用されるためシステムのPython環境を汚染します。具体的にはライブラリのコンフリクト等が起きるのではないかと思われます。こういった事態を避けるためにシステムとはまた別の環境を作り、その環境にPythonをインストールすることでシステムのPython環境を汚染することなくPython環境を構築することができます。
Pythonの仮想環境構築

仮想環境の構築

まず、仮想環境のためのディレクトリを「mkdirコマンド」で作成し、そのディレクトリに対して仮想環境を構築していきます。

「~/hoge」
~/:現在のディレクトリを示す
hoge:自由に名称を指定

# 現在のディレクトリにpythonというディレクトリを作成するというコマンド
$ mkdir ~/python

lsコマンドで現在のディレクトリの中身を確認します。無事作成されていますね。

$ ls
python 

次に「venv」というコマンドで仮想環境を作成しますが、ラズパイにはvenvが入っていないので下記コマンドでインストールします。

$ sudo apt-get install python3-venv

...

Successfully installed virtualenv-16.0.0

Successfully installed virtualenv-16.0.0が表示されたら完了です。

先ほど作成した「python」ディレクトリに仮想環境を構築します

# 「~」はホームディレクトリを示す
$ python3.7 -m venv ~/home/pi/python

これでpythonディレクトリに仮想環境が作成されました。

これで仮想環境が構築されましたが、利用するにはアクティベートしなければなりません。
sourceコマンドを入力して、アクティベートします。

$ source ~/home/pi/python_test/bin/activate

すると「$」の前に(python)と表示されます。これで仮想環境での作業が可能となります。

pi@raspi:~ $ 

だったのが

(python) pi@raspi:~ $ 

に変わっていると思います。

仮想環境から出るには、下記コマンドを実行して下さい。

$ deactivate

pipのインストール

参考サイト様:ラズパイにpipをインストールする

pipはpythonで開発を行う上でほぼ必須のツールですので、インストールしていきましょう!

現在はpython3系が主流ですのでそれに合わせてpipも3系をインストールしていきます。

インストール

$ sudo apt-get install python3-dev

$ sudo apt-get install python3-pip

pipのアップグレード

$ sudo pip install --upgrade pip3

バージョン確認

$ pip -V
pip 18.0 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

以上でラズパイでの環境構築はおわりです!
お疲れ様でした!