この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
サーモン大好き横山です。
Pythonを使うとき、システムの環境を汚さずPythonのコードを書くときに便利です。
今回その導入方法を説明していきたいと思います。
Pythonのバージョンごとのvirtualenvのインストール
Amazon Linux 2015.03を使う場合に、新規AMIから使う場合と2014.09以前からアップグレードしてきた場合とで、
Pythonのバージョンが異なる事があります。
以下、バージョンによってvirtualenvのインストールして下さい。
Python2.7系の場合
$ python -V
Python 2.7.9
$ sudo yum list installed | grep python27-virtualenv
(何も表示されなければ、インストールされていない)
$ sudo yum install -y python27-virtualenv
Python2.6系の場合
$ python -V
Python 2.6.9
$ sudo yum list installed | grep python26-virtualenv
(何も表示されなければ、インストールされていない)
$ sudo yum install -y python26-virtualenv
virtualenvの準備
Python2.6と2.7の比較を行おうと思いますので、python2.6系のインストールをします。
$ sudo yum list installed | grep python26
(何も表示されなければインストールされていない)
$ sudo yum install -y python26
$ sudo yum list installed | grep python26
python26.x86_64 2.6.9-1.80.amzn1 @amzn-updates
python26-libs.x86_64 2.6.9-1.80.amzn1 @amzn-updates
次に、virtualenvの環境を作っていきます。
virtualenvの環境を作る時は、$ virtualenv -p [Pythonの場所] [環境名]で作る事が出来ます。
作った環境は、作ったディレクトリの中に[環境名]/としてディレクトリが作成されます。
$ mkdir -p /tmp/virtualenv/
$ cd !:2
cd /tmp/virtualenv
$ virtualenv -p /usr/bin/python26 venv26
Running virtualenv with interpreter /usr/bin/python26
New python executable in venv26/bin/python26
Also creating executable in venv26/bin/python
Installing setuptools, pip...done.
$ virtualenv -p /usr/bin/python27 venv27
Running virtualenv with interpreter /usr/bin/python27
New python executable in venv27/bin/python27
Also creating executable in venv27/bin/python
Installing setuptools, pip...done.
$ ls -l
drwxrwxr-x 5 ec2-user ec2-user 4096 6月 19 03:46 venv26
drwxrwxr-x 7 ec2-user ec2-user 4096 6月 19 03:44 venv27
virtualenvの使用例
virtualenvの環境の中に入る
$ . [環境名]/bin/activateで入ることが出来ます。
環境の中に入ったときpromptの先頭に(環境名)が付きます。
$ . venv26/bin/activate
(venv26)$ which python
/tmp/virtualenv/venv26/bin/python
(venv26)$ python -V
Python 2.6.9
$ . venv27/bin/activate
(venv27)$ which python
/tmp/virtualenv/venv27/bin/python
(venv27)$ python -V
Python 2.7.9
virtualenvの環境から出る
$ deactivateで入ることが出来ます。
環境から出たたときprompt先頭に付いていた(環境名)が消えます。
(venv26)$ deactivate
$
(venv27)$ deactivate
$
環境毎にパッケージを自由に入れることが出来る
環境毎にpipを使用して、パッケージのインストールをすることが出来ます。
このインストールは他の環境、システムのライブラリに影響を与えません。
(venv27)$ pip install ipython
You are using pip version 6.0.8, however version 7.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting ipython
Downloading ipython-3.1.0-py2-none-any.whl (3.4MB)
100% |################################| 3.4MB 157kB/s
Installing collected packages: ipython
Successfully installed ipython-3.1.0
(venv27)$ pip freeze
ipython==3.1.0
(venv27)$ ipython
Python 2.7.9 (default, Apr 1 2015, 18:18:03)
Type "copyright", "credits" or "license" for more information.
IPython 3.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: exit()
(venv27)$ deactivate
$ . venv26/bin/activate
(venv26)$ pip freeze
(venv26)$ ipython
-bash: ipython: コマンドが見つかりません
(venv26)$
動作確認
今回はPython2.7から入った辞書内包記法が動くかどうか試してみようと思います。
確認用のソースコード
- test.py
#!/usr/bin/env python
print {i:2**i for i in range(10)}
実行
- Python2.6の場合
$ . venv26/bin/activate
(venv26)$ python test.py
File "test.py", line 2
print {i:2**i for i in range(10)}
^
SyntaxError: invalid syntax
- Python2.7の場合
$ . venv27/bin/activate
(venv27)$ python test.py
{0: 1, 1: 2, 2: 4, 3: 8, 4: 16, 5: 32, 6: 64, 7: 128, 8: 256, 9: 512}
まとめ
複数Pythonのバージョンをチェックするときに、
virtualenvを使用して、システム内部のPythonライブラリを汚さずに色々と試すことができます。