pyenvによるPythonのインストールとDjango開発環境の構築

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は有力候補のひとつに違いないでしょう。

タイトルとURLをコピーしました