virtualenvの仮想環境構築でPythonのバージョンを指定する

Pocket

はじめに

MacでPythonの仮想環境を任意のPythonのバージョンで作る方法を書いていきます。

この手の情報はWebで検索をすると様々な方法がヒットしますが、いろんな要素が絡んでいる内容なので知識が不足している場合、それぞれが何の話をしてるのか把握しにくくなりがちですが論点は大体下記の2点に集約されると思っています。

Pythonのバージョン

Pythonのバージョンは2系と3系で構文の書き方が違ったり利用できるライブラリが異なったりします。そのため目的に応じてPythonのバージョンを使い分けられる必要がでできます。アプローチとしては

  • 元々macに入っている2系に加えて3系をインストールして、別々のコマンドで使い分けるという方法 (今回はこちらで説明します。)
  • pyenvという複数バージョンの-Pythonを簡単に切り替えることができるライブラリを用いる方法

が挙げられます。

仮想環境

複数のツールやサービスを大きくする場合には必要となるライブラリーの種類が変わってきたりバージョンが変わることがあります。その場合にはそれぞれの開発環境を仮想的に分けてあげる必要が出てきます。

この仮想環境を構築するためには通常はvirtualenvというライブラリを使います。さらにこのvirtualenvのラッパー(virtuelenvを内包しつつ使いやすくしたもの)にvirtuelenvwrapperというものもあります。
今回はvirtuelenvwrapperではなく、純粋なvirtualenvを利用します。



環境の構築

ではまずマックにもともと搭載されているPythonのバージョンを確認してみましょう

$ python -V
Python 2.7.10

インストール先も確認してみます

$ which python
/usr/bin/python

2.7が搭載されていました。

Python3の導入

Python3はhomebrewでインストールします。
homebrewのインストール

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Python3のインストール

$ brew install python3

Python3のインストール先の確認

$ which python3
/usr/local/bin/python3

Python3の確認

$ python3 -V
Python 3.6.4

無事Python3系がインストールされているのか見て取れます。

virtualenvを使った仮想環境構築

virtualenvをpipでインストールします。

$ pip install virtualenv

今回のテストのために適当なディレクトリを作ってその中に入れます。

$ mkdir test
$ cd test

virtualenvのコマンドで先ほどインストールしたPython3を指定して環境を作成します。
はじめにhomebrewでPython3をインストールした際にコマンドのパスが通ったので、そのコマンドを利用してPythonのバージョンを指定します。

$ virtualenv -p python3 test_env
virtualenv -p [Pythonのコマンド] [作成する環境名]

ちなみにパスをそのまま書いても同じ結果が得られます。

$ virtualenv --python=/usr/local/bin/python3 test_env

環境はvirtualenvコマンドを実行したディレクトリに新しいフォルダとして構築されているので、中に入ります。

$ cd test_env

環境を起動してみましょう。

$ source bin/activate

成功した場合ユーザー名の前に環境の名前が(test_env)のように表示されるはずです。
試しにPythonのバージョンを見てみましょう。

$ python -V
Python 3.6.4

このように仮想環境内では先ほど指定したPythonのバージョンがPythonコマンドで利用できるようになっています。
仮想環境を終了する場合はこのコマンドを使います。

$ deactivate



virtualenvwrapperについて

今回は利用しませんでしたがvirtualenvwrapperという、virtualenvをさらに使いやすくしたようなラッパーがあります。このライブラリを用いると、

$ mkvirtualenv test_env

といった感じでに仮想環境を作ることができます。
当初僕はvirtualenvwrapperを用いたmkvirtualenvコマンドとvirtualenvを用いたvirtualenvコマンドの違いがよくわからず混乱していたので、注意してください。

ホームページを読むとこのライブラリのできることが書いてあります

  1. Organizes all of your virtual environments in one place.
  2. Wrappers for managing your virtual environments (create, delete, copy).
  3. Use a single command to switch between environments.
  4. Tab completion for commands that take a virtual environment as argument.
  5. User-configurable hooks for all operations (see Per-User Customization).
  6. Plugin system for more creating sharable extensions (see Extending Virtualenvwrapper).

ようするに仮想環境が複数あってもまとめて管理できたり仮想環境の切り替えが楽になるよ、ということみたいです。興味のある方はこちらも試してみてください。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です