Edited at

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


環境

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


参考にした

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

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

http://ksino.hatenablog.com/entry/2016/11/17/232619

http://p15.jp/2014/04/17/000137

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

https://qiita.com/twipg/items/75fc9428e4c33ed429c0

http://www.python.ambitious-engineer.com/archives/818

https://qiita.com/1000ch/items/93841f76ea52551b6a97

http://umatomakun.hatenablog.com/entry/2014/04/25/223240

https://stackoverflow.com/questions/24462007/how-to-deal-with-this-error-1049-unknown-database-users-ohyunjun-work-astra

http://kinokoru.jp/archives/1188

http://gonulates.com/emre/blog/2017/04/27/solving-operationalerror-1366-incorrect-string-value-mysql-error-django/

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