pyenvは、複数バージョンのPythonを管理して、それらを切り替えて使えるようにしてくれる、便利なバージョン管理ツールのひとつです。昨年の10月から11月にかけて、このpyenvを使い、Linux上にDjangoの開発環境を構築したときのメモが手元にあったので、記事にしてみました。
pyenvはその名の通り、rubyでお馴染みのrbenvやnodeのバージョン管理ツールnodenvのPython版です。基本操作はこれらのツールとほとんど同じと考えてよいです。
なお、この記事でPythonというときは、Python3を指しています。Python2とPython3の間には互換性はなく、Python2のサポートは、今年4月をもって終了しています。
pyenv本体のインストール
では、さっそく、curlコマンドを使って、pyenv本体をダウンロードします。
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
これで、pyenv本体が、~/.pyenv以下にダウンロードされました。続いて、.bashrc又は.bashr_profileに以下の3行を追加します。
export PATH="/home/msnk/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
sourceコマンドにより、この設定をシステムに反映させます。
source .bashrc
これで、pyenv本体のダウンロードど基本設定は終わりです。
最新バージョンのPythonをインストール
続いて、次のコマンドで、ダウンロード可能なPythonのバージョンを確認。
pyenv install --list
現在のPythonの最新バージョンは、3.8.3のようなので、これを以下のコマンドを実行して、ダウンロードし、これをコンパイル。
pyenv install 3.8.3
この最新バージョンのPythonをシステム全体で使えるようにするため、以下のコマンドを実行。
pyenv global 3.8.3
バージョンが切り替わったことを確認するため、以下のコマンドを実行。 3.8.3の前に*印がついていれば切り替えは成功です。
system * 3.8.3 (set by /home/msnk/.pyenv/version)
なお、特定のフォルダ内以下でのみ、pyenveで管理しているバージョンを使えるようにしたい場合には、以下のオプションをつけて実行。
pyenv local 3.8.3
上記のコマンドを実行したフォルダ内に.python-versionファイルが作成され、そこに指定したPythonのバージョン番号が記述されます。
Djangoのセットアップ
Djangoは、Pythonで実装されたWebアプリケーションフレームワークのひとつです。MVC型(DjangoではMTVと呼ぶ)のフルスタックWebアプリケーションフレームワークという点で、Ruby on RailsやLaravel(PHPベース)と比較されることも多いようです。
すでに、pyenvで最新バージョンのPythonがインストールされている場合、次の2行のコマンドを実行だけで、Djangoをインストールできます。
pip install --upgrade pip python -m pip install Django
インストールされたDjangoのバージョンの確認方法は次のとおり。
python
>>> import django
>>> django.VERSION
3.0.6
最後に表示された3.0.6という数字がインストールされたDjangoのバージョンです。現時点での最新バージョンだということが分かります。なお、Djangoのバージョンを指定してインストールしたい場合は、次のとおり。
python -m pip install Django==【バージョン番号】
Djangoプロジェクトの作成
Djangoのセットアップが完了したら、 さっそくテスト用のプロジェクトを作ってみましょう。プロジェクト名はmysiteとしました。
django-admin startproject mysite
プロジェクトmysite内のファイル構成は次のとおり。
mysite/ ├── manage.py └── mysite ├── __init__.py ├── asgi.py ├── settings.py ├── urls.py └── wsgi.py
Ruby on Railsと比べると、自動で生成されるファイルの数は少ないが、ここはあくまでもスタート地点。さらに、mysite内のmanage.pyファイルのある階層に行き、次のコマンドを実行。
python manage.py runserver
赤字でデータベースのマイグレーションが行われていないという意味の警告が出ますが、これを無視して、ブラウザーからhttp://127.0.0.1:8000/にアクセルします。
python manage.py createsuperuser python manage.py migrate
ここで、再びビルトインサーバーを立ち上げ、ブラウサーからhttp://127.0.0.1:8000/adminにアクセス。
先ほど設定したユーザー名とパスワードでログインしてみる。
独立したプログラム同士が協調して動く、疎結合というDjangoの設計思想は、Ruby on Railsとは対局に位置するものです。この辺りは、どちらが正しいかというより、最後はどちらが好みかという問題に帰着するのかもしれません。
すでに、機械学習などでPythonに馴れていて、Web開発でもPythonを使いたいという人なら、Djangoは有力候補のひとつに違いないでしょう。