第8回: Pythonの仮想環境を整える

Raspbianには、Python2.7系とPython3系の2種類がはじめからインストールされていますが、仮想環境でPythonを実行できるよう環境を整えます。最終的にpipenvを使えるようにします。

1. pyenvのインストール

pyenvとは複数のPythonのバージョンを使い分けることが出来るツールです。

pyenv公式のPrerequisitesにならって、pyenvに必須なパッケージをインストールしておきます。すでに入っているパッケージもありますが気にせずに実行。

 

pyenv公式にしたがってインストールと設定を行います。

gitでpyenvをクローン。

 

pyenvの環境変数と初期化コマンドを、bashの設定ファイルに追加します。

 

設定をbashに読み込ませます。

2. Pythonをインストールする

pyenvによって任意のバージョンのPythonをインストールできる環境が整いました。

まずは、インストール可能なPythonのバージョンを調べてみます。

 

現段階で最新であるPython3.7.3をインストールします。

 

インストールした3.7.3をデフォルトにするコマンドは次のとおりです。以降、単にpythonとターミナルに打ち込めば、3.7.3が起動します。

Pythonのライブラリ管理ツールpipも同時にインストールされます。pip自体をアップグレードしておきます。

 

3. pipenvをインストール

pipenvを使うと、プロジェクトごとに、Pythonのバージョンとライブラリ構成を変えることができるようになります(仮想化)。pipでインストールします。

プロジェクトのフォルダ内に仮想環境の関連ファイル一式を保存するための設定を行います。次のコマンドを実施します。

 

4. pipenvで仮想環境を構築する

プロジェクト用のディレクトリを作って移動します。

 

仮想環境へPythonをインストールします。pyenvでインストールした3.7.3がグローバルに設定されているので、pipenv installで3.7.3がインストールされます。

 

プロジェクトディレクトリの内容を確認してみます。

.venvが仮想環境のファイル一式が収められているディレクトリ。環境変数にPIPENV_VENV_IN_PROJECT=trueを設定すると、プロジェクトディレクトリ直下に作られます。

その他、PipfilePipfile.lockが作成されます。

 

異なるバージョンのPythonをインストールすることも可能です。
例えば、3.6.8をインストールしたかったら、--pythonで指定します。ラズパイにインストールされていないバージョンのPythonを指定すると、pyenv経由でインストールするかどうか聞いてきます。yで続行。nでキャンセル。今回はキャンセル。

 

仮想環境にライブラリをインストールするのもpipenvです。

プロジェクトディレクトリ内でpipenvを使ってライブラリをインストールします。このライブラリはこのプロジェクトでのみ有効です。試しにrequestsをインストールしてみます。

 

文法チェックなど、開発時のみ必要なライブラリは-dオプションを指定してインストールします。

 

仮想環境に入るには、次のコマンドです。仮想環境下では、コマンドプロンプトが変わります。

 

Pythonを起動後、requestsをちゃんとインポートできました。

 

仮想環境から脱出するコマンドはexitです。

 

仮想環境を抜けた状態でPythonを起動してrequestsをインポートしてみます。
requestsは仮想環境の外では使えず、インポートに失敗します。

 

以上、Pythonの仮想環境の構築でした。


目次

第1回: セットアップに必要なもの
第2回: SDカードにRaspbianをインストールする
第3回: 起動!
第4回: リモートログインするための設定
第5回: リモートログインして設定を続行する
第6回: パッケージ管理システムapt
第7回: RSA公開鍵認証でリモートログインする
第8回: Pythonの仮想環境を整える
第9回: MJPG-streamerを導入する
第10回: GPIOを汎用UARTとして使用する方法
第11回: GPIOでLチカ
第12回: I2CデバイスBME280で温湿度と気圧をモニタする

第13回: (未定)


2019/06/16: 初版

Leave a Comment

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください