LoginSignup
5
3

More than 5 years have passed since last update.

Vagrant + Ubuntu + VirtualBoxでPythonの環境構築したった

Last updated at Posted at 2018-07-08

環境

MacOS: High Sierra(10.13.2)
Vagrant: 2.1.2
Ubuntu: 16.04
VirtualBox: 5.2.14r123301
MySQL: 5.7.22-0ubuntu0.16.04.1 (Ubuntu)
Python: 3.6.4
Django: 2.0.2
mysqlclient: 1.3.12
psycopg2: 2.7.4
PyMySQL: 0.8.0
pytz: 2018.4
uWSGI: 2.0.17

その他
anyenv
pyenv

大まかな流れ

  • Gitインストール
  • リポジトリからプロジェクトをクローン
  • MySQLインストール
    • mysql-server
    • mysql-client
  • anyenvインストール
  • anyenvのパスを通す
  • パッケージインストール
    • curl
    • llvm
    • sqlite3
    • libssl-dev
    • libbz2-dev
    • libreadline-dev
    • libsqlite3-dev
    • libncurses5-dev
    • libncursesw5-dev
    • python-tk
    • python3-tk
    • tk-dev
    • pyenv-pip-rehash
    • pyenv-virtualenv
    • ccache
    • pyenv-pip-update
  • pyenvインストール
  • pyenvのパスを通す
  • pythonインストール

仮想環境をvenvで作成する場合はここでストップ
venvでDjangoの環境を作成してみたった(Python3.3以降)


  • pipインストール
  • pythonのバージョンの切り替え
  • mysqlclient関連パッケージインストール
    • python-dev
    • libmysqlclient-dev
  • Djangoインストール
  • mysqlclientインストール
  • psycopg2インストール
  • PyMySQLインストール
  • pytzインストール
  • uWSGIインストール
  • CREATE DATABASE mydb;
  • python manage.py makemigrations
  • python manage.py migrate
  • python manage.py runserver

つまづいたところ

パスを通し忘れた

anyenv

~/.bashrcに以下を記述
(「よしなにやっとけや!」と心の中で突っ込むことを忘れずに!)

if [ -d $HOME/.anyenv ]
then
    export PATH="$HOME/.anyenv/bin:$PATH"
    eval "$(anyenv init -)"
fi

https://qiita.com/SUZUKI_Masaya/items/51366be1510f7fde7cdf

pyenv

~/.bashrcに以下を記述

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

※(2019/1/27追記)たぶんanyenvの設定より上に書かないとまずい?
もし下に書いた場合、$PYENV_ROOTのパスがanyenvを通らない。

echo $PYENV_ROOT # => /home/vagrant/.pyenv ではなく、/home/vagrant/.anyenv/envs/pyenvが正しい

必要なパッケージを入れていなかった

パッケージを入れまくった
(何を入れたのか理解していない)

sudo apt install curl llvm sqlite3 libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev python-tk python3-tk tk-dev

https://qiita.com/SUZUKI_Masaya/items/7ba3fef9eb7c9603762a

MySQLの起動の仕方がわからなかった

mysql.server startとかやった、、、
当然NGだったので以下を実行

sudo systemctl start mysql

python -vしたらコンソールを閉じられなくなった

Python初心者キラーに殺されかけた
Ctrl+Dで抜けられた

pipがない

以下を実行

curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python3

https://qiita.com/TatchNicolas/items/ca6b8007d914bdef3662

pythonのバージョンがデフォルトだった

以下を実行

pyenv local 3.6.4

mysqlclientが入らない

以下を実行

apt-get install python-dev libmysqlclient-dev

マイグレーションファイルが作成できない

django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")

データベースがなかった
settings.pyの設定にしたがってデータベースを作成する

CREATE DATABASE mydb;

モジュールが足りない(2019/01/29追記)

ModuleNotFoundError: No module named 'requests'

pip install requests

ModuleNotFoundError: No module named 'bs4'

pip install bs4

データが作成できなかった

以下のようなエラーになった
OperationalError - 1366: "Incorrect string value ... "

以下を実行する

DROP DATABASE mydb;
CREATE DATABASE mydb CHARACTER SET utf8;

migrateする

python manage.py migrate

http://motomichi-works.hatenablog.com/entry/2015/01/03/015337

アクセスするIPアドレスとポートがわからない

以下を参考にしたが、結局わからなかった
最終的にいろいろ試しまくったら
192.168.33.10:9080
で落ち着いた

http://kinokoru.jp/archives/1188

その他

2019/01/27追記

pyenv installコマンドが使えなくなっていた。

以下のコマンドで解決

cd ~/.anyenv/envs/pyenv/plugins/python-build/
sudo ./install.sh

https://qiita.com/Soh1121/items/68f231d759a76de8c471

2019/01/29追記

sudo pip install requestsするとsudo: pip: command not found

sudoはいらない

pip install requests

参考にした

5
3
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3