ズッキーニのプログラミング実験場

プログラミング + アカデミック + 何か面白いこと。 記載されているものは基本的に私が所属する団体とは関係がありません。

   Apr 09

python ローカル開発環境 構築

by zuqqhi2 at 2015年4月9日
Pocket

※2016/12/29 更新

pyenvを使って python ローカル開発環境 を構築する方法を簡単にまとめた。
pythonでもpyenvとvirtualenvを使えばRubyのbundlerやGemfileと似たことができる。
pythonでもバージョンやライブラリの管理が簡単にできるため、
これを期にpythonを試してみるのもあり。

環境

  • OS
    • Linux version 3.2.0-64-generic (buildd@kissel) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #97-Ubuntu SMP Wed Jun 4 22:04:21 UTC 2014
  • pyenv
    • 1.0.6-1-g0256ff0
  • virtualenv
    • 15.1.0

pyenvのインストールと設定

これは非常に簡単にできる。

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

$ vim ~/.bashrc
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

$ source ~/.bashrc

$ pyenv install 3.5.2
Downloading Python-3.5.2.tar.xz...
-> https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz
Installing Python-3.5.2...
patching file Lib/venv/scripts/posix/activate.fish
Installed Python-3.5.2 to /home/ml/.pyenv/versions/3.5.2

# shimのリフレッシュ
$ pyenv rehash

# 使用するバージョン指定
$ pyenv global 3.5.2

$ which python
$HOME/.pyenv/shims/python

# アンインストール方法
$ pyenv uninstall 3.5.2

ライブラリの管理

pipコマンドを使ってライブラリのインストールができる。
Gemfileに相当するのはrequirements.txtだ(実際には名前はなんでも良い)。
また、pythonのライブラリは基本的には実行できるスクリプトもインストールされることが
ほとんどのようで、bundle execのようなものは必要ないらしい。

pip installをすると同じpyenvで同じバージョンのpythonを使う環境すべてに影響を与えてしまう。
それを防ぐためにはvirtualenvというものを使う。

$ which pip
$HOME/.pyenv/shims/pip

# pipのバージョンが低かったりするので上げておく
$ pip install --upgrade pip

# virtualenvのインストール
pip install virtualenv

# virtualenvで名前の通り仮想環境を作成する
# pオプションで指定するのはpythonの実行ファイルパス
# (pyenvなら以下のようにpython${VERSION}で大丈夫)
# オプションなしの引数は仮想環境に入るためのスクリプトなどの設置パス
$ virtualenv -p python3.5 $HOME/.venv35_ml

# 仮想環境に入る
# プロンプトが"$"から"(.venv35_ml) $"に変わります
$ source $HOME/.venv35_ml/activate

# 基本的なライブラリのインストール方法
$ pip install numpy
Collecting numpy
  Downloading numpy-1.9.2.tar.gz (4.0MB)
    100% |████████████████████████████████| 4.0MB 91kB/s
Installing collected packages: numpy
  Running setup.py install for numpy
Successfully installed numpy-1.9.2


# requirements.txtを利用した場合
$ vim requirements.txt
django<1.3
urllib3
nose==1.1.2

$ pip install -r requirements.txt
 Collecting django<1.3 (from -r requirements.txt (line 1))
   Downloading Django-1.2.7.tar.gz (6.4MB)
     100% |████████████████████████████████| 6.4MB 50kB/s
 Collecting urllib3 (from -r requirements.txt (line 2))
   Downloading urllib3-1.10.2.tar.gz (132kB)
     100% |████████████████████████████████| 135kB 989kB/s
 Collecting nose==1.1.2 (from -r requirements.txt (line 3))
   Downloading nose-1.1.2.tar.gz (729kB)
     100% |████████████████████████████████| 733kB 416kB/s
 Installing collected packages: django, urllib3, nose
   Running setup.py install for django
   Running setup.py install for urllib3
   Running setup.py install for nose
 Successfully installed django-1.2.7 nose-1.1.2 urllib3-1.10.2

# インストールされているライブラリの確認
$ pip freeze
Django==1.2.7
nose==1.1.2
numpy==1.9.2
urllib3==1.10.2

# gemratのようなこと
$ pip freeze > requirements_new.txt

# 仮想環境から退出
# 仮想環境外では先程インストールしたライブラリは使えない
$ deactivate

pythonでもphpのcomposerやrubyのbundlerのようなことができることがわかったと思う。

pyenvとvirtualenvを使って機械学習用のDockerfileを作ってみた。
(Dockerですでに環境分離出来ているからvirtualenvはなくても大丈夫だけど一応使ってみた)

参考

Related Posts

  • <!--:ja-->[PCL][Python][CPP]Python PCL (Point Cloud Library)のインストールとサンプル実行<!--:--><!--:en-->[PCL][Python][CPP]Install Python PCL(Point Cloud Library) And Run Sample Program<!--:-->2014年8月3日 [PCL][Python][CPP]Python PCL (Point Cloud Library)のインストールとサンプル実行 概要 PCL(点群処理ライブラリ)のが出たということで触って見た。 まだ python pcl でできる部分は少ないみたい。 Env Linux ubuntu 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 […]
  • 2013年5月26日 [Python] python urllib 2のインストール 本のコードを写経していて python urllib 2が必要なのだが、 なぜかpipでurllib2を検索しても出て来なくて、 urllib3しかないっぽいからこっちを入れてみる。 […]
  • 2013年3月29日 [gitflow]ホームディレクトリにインストール git-flowのインストール 以下のようにやるとうまく動いた。 git-flowの参考URL http://qiita.com/items/b4d9331ec3952dbe5205 git-flowのインストール It seems to work […]
  • 2015年3月24日 Elasticsearch インストール ubuntu elasticsearch インストール […]
  • 2015年3月29日 ScalaとSbtのインストール Scala Sbt インストール Scalaはオブジェクト指向言語と関数型言語の両方の特徴を併せ持つハイブリッドな言語。 SbtはScalaのビルドツール。プロジェクト・パッケージ・ライブラリ管理もしてくれる便利なツール。 環境 OSLinux […]
  • 2015年3月25日 Coqによる 証明駆動開発 超入門 証明駆動開発 とは 証明駆動開発 とは証明によってプログラムが期待通りの性質を有しているかを確かめながら開発する手法のこと。 ユニットテストの一部で使用可能な方法。 証明駆動開発 […]
Pocket

You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.