Vagrant + Anaconda + Python3 + jupyter notebook環境導入

概要

Macbook上にVagrantを用いて、Python3の環境導入を行います。

環境は以下

ホスト

 ・macOS High Sierra 10.13.4
 ・VirtualBox 5.2.1
 ・Vagrant 2.0.4

ゲスト

 ・CentOS7
 ・Anaconda3-5.2.0
 ・Python3.6.5(Anaconda経由でインストール)

Mac

MacへのVirtualBoxVagrantは適当にGUIでインストール

Vagrantfile

VagrantでVitual Machine(VM)を作成するには、設定ファイルであるVagrantfileが必要です。 VMを作成するためのディレクトリを作成して、コマンドを実行

mkdir vagrant_dir
cd vagrant_dir
vagrant init

これでVagrantfileが作成されます。 次にVagrantfileの編集。

vim vagrant file

Vagrant.configure("2") do |config|
  # Box
  config.vm.box = "centos/7"
  # 仮想マシンのネットワーク環境設定
  # "private_network"を指定するとホストOSからのみアクセス可
config.vm.network "private_network", ip: "192.168.33.10", auto_config:true
 config.vm.network "forwarded_port", guest: 8888, host: 8888 
  # ホスト側とゲスト側で共有するフォルダ。この場合Vagrantfileが存在するフォルダが/var/www/shareになります。
  config.vm.synced_folder "./", "/var/www/share"

  # プロバイダの指定
  config.vm.provider "virtualbox" do |vb|
    # GUI今回は不使用
    vb.gui = false
    # 仮想マシンの名前
    vb.name = "CentOS"
    # メモリ(MB)
    vb.memory = "2048"
    # CPU
    vb.cpus = 2
  end
end

Boxの追加

Vagrantbox.es (http://www.vagrantbox.es/) からお目当のボックスを探しましょう。

vagrant box add centos7.1 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box

Vagrantの起動

起動します。次回からはこれ以降の手順がスタートです。

# 対象ディレクトリに移動
cd vagrant_dir
# 起動
vagrant up
#仮想環境へ接続
vagrant ssh

Vagrantのシャットダウン、休止

# シャットダウン
vagrant halt
# 一時停止
vagrant suspend

CentOS

ここからはゲストOSでの作業になります。

##firewall停止
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo set enforce 0

gitのインストール

sudo yum -y install git

pyenvのインストール

zshを使用している方は bashrcをzshrcで読み替えてください。

git clone https://github.com/yyuu/pyenv.git ~/.pyenv  
echo 'export PYENV_ROOT="HOME/.pyenv"' >> ~/.bashrc  
echo 'export PATH="PYENV_ROOT/bin:PATH"' >> ~/.bashrc  
echo 'eval "(pyenv init -)"' >> ~/.bashrc  
source ~/.bashrc  

anacondaのインストール

# anacondaのバージョン確認
pyenv install -l | grep anaconda
# 最新版インストール
pyenv install anaconda3-5.2.0
pyenv rehash
# anacondaをpythonのデフォルトに設定
pyenv global anaconda3-5.2.0
echo 'export PATH="PYENV_ROOT/versions/anaconda3-5.2.0/bin/:PATH"' >> ~/.bashrc
source ~/.bashrc
# condaのアップデート
conda update conda

Jupyter notebook

jupyter notebookはノートブックと呼ばれる形式で作成したプログラムを実行し、結果を記録しながらデータの分析を行うことができます。

変数の中身を見たり、デバッグをしたりといったことも簡単に行えるので機械学習の際は超お世話になります。

Anacondaをインストールした段階で、勝手にインストールされているので起動してみましょう。

# --ip=0.0.0.0 はlocalhost以外でのアクセスをする場合に必要。
jupyter notebook --no-browser --ip=0.0.0.0
# 起動後はCtrl + c でサーバー停止出来ます。

PC上のブラウザからVagrant上のJupyterへアクセス

Vagrant上のIPアドレスでアクセス
http://192.168.33.10:8888
tokenが必要みたいなことを言われるので、ホストOSで

# Jupiter のlist表示
jupiter notebook list

を実行し、tokenを貼り付ける。

サンプルコードの実行

ブラウザの右上に表示されているプルダウンメニューから New -> Python3 を選んで下記のコードを実行

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 1)
y = np.sin(x)
plt.plot(x, y)

f:id:mashi-prog:20180609105713p:plain こんな感じの出力がされたらOKです。