Help us understand the problem. What is going on with this article?

MacOSにVagrantとPyenvとpyenv-virtualenv使ってUbuntu16.04、Python3系の仮想環境を構築

More than 1 year has passed since last update.

はじめに

Ubuntu16.04を使ってpython3系を書きながら開発をしていく方に向けて、この記事を見ながら進めていけば構築ができるようにまとめました。
僕自身も会社で上記の環境で開発をしていますが、試しに自宅にあるMacを使ってトライしましたが、1から構築して環境を作ることができました。
ところどころ画像も取り入れながらまとめてあるので、ぜひ参考にして見てください。

環境

  • MacOS Sierra (10.12.4)

仕様

  • MacにVagrantを使ってUbuntu16.04の仮想環境を構築する
  • python 3.6.1(任意で変更可能)
  • vagrant Version: 1.9.5

アジェンダ

  • (1)必要なものをインストール
  • (2)vagrantで仮想環境のセットアップ
  • (3)pyenvと

  • (4)ホストOSのエディタを使ってゲストOSのファイルを編集したい場合

構築方法

(1)必要なものをインストール

install-vagrant.png

↑クリックして開く

50162b730d1cd5a47ea434f02665a3e4.png

↑vagrant.pkgをダブルクリックし、インストール

e4b1f1a7896cb3efb28bf94d3c1f65dc.png

↑クリック

6aa5dbcad19393cd401651f76a240786.png

↑virtualBox.pkgをダブルクリック

  • ubuntuのboxが入ったVagrantを取ってくる(少し時間がかかる)
$ vagrant box add ubuntu16.04 https://atlas.hashicorp.com/bento/boxes/ubuntu-16.04/versions/2.3.0/providers/virtualbox.box 
  • boxが追加されているか確認する
$ vagrant box list
=> bento/ubuntu1604 (virtualbox, 0)
  • 仮想環境を置くディレクトリを作る
$ mkdir vagrant_env(任意の名前)
$ cd vagrant_env(任意の名前)

(2)vagrantで仮想環境のセットアップ

  • 仮想環境を作る
$ vagrant init bento/ubuntu1604
  • Vagrantfileが作られているか確認
$ ls
=> Vagrantfile
  • 仮想マシンを起動
$ vagrant up
  • 仮想マシンにssh接続
$ vagrant ssh
vagrant@vagrant:~$

(参考)vagrantコマンド一覧

1 2
vagrant box add {VM名} {boxファイルダウンロードURL} box追加
vagrant box list 利用可能box一覧確認
vagrant box remove {box名} boxの削除
vagrant init vagrant 初期化(Vagrantfileの作成)
vagrant up vagrant 起動
vagrant ssh vagrant ログイン
vagrant halt vagrant 終了
vagrant reload vagrant リロード(halt + up)
vagrant destroy vagrant 破棄

vagrantコマンド一覧

(3)pyenvとpyenv-virtualenvで環境を整理する

  • パッケージをアップデートする
vagrant@vagrant:~$ sudo apt-get update
  • pyenv をcloneする
vagrant@vagrant:~$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
  • pyenv-virtualenvをcloneする
vagrant@vagrant:~$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
  • 環境変数を設定する
vagrant@vagrant:~$ vim ~/.profile

(以下を追記)

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
  • .profileを読み込む
vagrant@vagrant:~$ source ~/.profile
  • インストール可能なpythonのバージョンを確認
vagrant@vagrant:~$ pyenv install -l
  • 目的のバージョンをインストール(今回は3.6.1)
vagrant@vagrant:~$ pyenv install 3.6.1

pyenv-virtualenv活用

  • 同じバージョンをコピーしてpyenv-virtualenvで環境を作る
vagrant@vagrant:~$ pyenv virtualenv 3.6.1 venv_3.6.1(任意の名前)

pyenv-virtualenvの環境に入る

vagrant@vagrant:~$ source /home/vagrant/.pyenv/versions/venv_3.6.1/bin/activate
(venv_3.6.1) vagrant@vagrant:~$
  • バージョンの確認
(venv_3.6.1) vagrant@vagrant:~$python -V
=>3.6.1
  • 環境の停止
(venv_3.6.1) vagrant@vagrant:~$ deactivate
vagrant@vagrant:~$ 

(4)ホストOSのエディタを使ってゲストOSのファイルを編集したい場合

  • 仮想環境から出る
vagrant@vagrant:~$ exit
  • Vagrantfileを編集
$ vi Vagrantfile

以下の部分のコメントアウトを外し、編集

  config.vm.synced_folder "(共有したいホストOSのディレクトリ)", "共有したいホストOSのディレクトリ",
    create: true, owner: "vagrant", group: "vagrant"
()
  config.vm.synced_folder "../vagrant_env", "/home/vagrant"・・・
  • vagrantfileを再読み込み
$ vagrant reload

最後に

これで環境は構築できたと思います。このあとはそれぞれの環境で 必要なライブラリをインストールして、「この環境はこのプロジェクト専用」を意識してpyenvやpyenv-virtualenvをうまく利用して開発していきましょう。
ひととおりコマンドの羅列となってしまいましたが、コマンドの説明なども交えて記事を編集していきます。

koheiiwamura
Twitter: @k_iwamu
timers
グローバルな家族アプリFammを開発運営しているスタートアップです。
https://timers-inc.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away