AnacondaとSpyderでDjango REST 開発環境を整える

Django で RESTなAPIを作成しようとするとなかなか面倒だった気がするが、REST framework なんてものがあるのを知ったので試してみる。Eclipse+PyDev環境に慣れていたのだが、Webアプリケーション以外でPythonを使うのに、Anacondaがおもしろそうなので環境構築を試みる。

「Webスクレイピング」とは、インターネットからデータを機械的に集め、必要な情報を抽出するプロセスのこと。
検索エンジンだけでは限られた情報しか集められませんが、この技術を使えば、インターネット上の膨大な情報の中から本当に必要な情報を入手できます。

1.ダウンロードとインストール

https://www.continuum.io/downloads

から、Windows用のインストラーをダウンロードしてウィザードに従いインストール。

2.仮想環境の構築

https://docs.continuum.io/anaconda/navigator-tutorial#navigator-basic-workflow

2.1 作成

Anaconda Navigator を起動し左ペインでEnvironmentを選択しCreateボタンを押下

anaconda_env01

環境名を入力、Pythonのバージョンを指定しCreate

anaconda_env02

環境が作成された。pipなど、最低限のパッケージは導入されている。

anaconda_env03

2.2 Djangoパッケージのインストール

新規に作成した環境を真ん中のペインで選択し、右側でALLを選択しキーワードにdjango を入力Applyでインストール

anaconda_env04

anaconda_env05

2.3 仮想環境の確認

環境の三角ボタンを押すと、ターミナルを起動できる。

anaconda_env06

プロンプトに、venv の環境が表示される。

pip freeze で、インストールされているパッケージを確認

anaconda_env07

3. Spyder の起動

3.1 Spyderのインストール

Anaconda Navigatorの左ペインからHomeを選択し、Applications on にて、作成した環境を選択。Spyder の Install ボタンを押下して、Spyder環境を構築する。

anaconda_env08

インストールが終わると、Lanch ボタンになるので、押下して起動する。

3.2 Djangoパッケージの確認

起動したら、Djangoパッケージが利用可能か確認してみる。import django として、F9を押下すると、その行だけ実行される。エラーがないことを確認。」

anaconda_env09

4.Django REST 環境の構築

4.1 パッケージのインストール

http://www.django-rest-framework.org/#installation

django_rest01

Anaconda Navigator のEnvironment に戻って、作成した仮想環境(venv) のターミナルを開き、pip にて対象の仮想環境に関係パッケージをインストール。

pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support

django_rest02

5.Django REST プロジェクトの作成

5.1 Spyderプロジェクトの作成

Spyder メニュー Projects - New Project から新規プロジェクトを作成する。

プロジェクトを作成すると、Spyder がそのディレクトリ配下をプロジェクトとして管理してくれる。

spyder_project01

5.2 DjangoプロジェクトをSpyderプロジェクトディレクトリに作成

上記で作成したSpyderプロジェクトが、Spyder メニュー 表示 - ペイン - プロジェクトエクスプローラー に表示されるので、コンテキストメニューから開くなどして、実際のパスを取得。

spyder_project02

再度、Anaconda Navigator のEnvironment に戻って、作成した仮想環境(venv) のターミナルを開き、Django プロジェクトを作成する。

>django-admin.py startproject restsample

spyder_project03

django プロジェクトが作成された。

spyder_project04

django_rest03

6.Django プロジェクトの起動

6.1 起動設定

manage.py を開いて、Spyder メニュー - 実行 - 設定 を選択。

  • 実行する設定を選択 : manage.py
  • コンソール : Pythonに特化した新規コンソールで実行
  • コマンドラインオプション : チェックONにし、runserver を入力(必要に応じポート番号)

6.3 課題としたが、プロセスの停止がSpyder上からうまくできない。コンソールに、現在のPython/IPython コンソールで実行を指定しても、IPython コンソールだとそもそもリクエストとがうまく処理されない。Python コンソールだと、リクエストは処理されるが、やはりプロセスの停止ができない。(2つプロセスができないだけこちらがましか?)

django_run01

6.2 起動およびデバッグ

実行および、デバッグ実行可能

django_run02

6.3 課題

起動したWebサーバープロセスを、Spyderから停止しようとしても停止できない。

表面上は停止状態なのだが、Webリクエストを受け付ける状態。

django_run04

プロセスを確認すると、 -u オプションありと なしとで、2つ作成されていて、Spyder上から停止しても、-u オプション付きのプロセスしか停止されない。

django_run03

-u     : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x
         see man page for details on internal buffering relating to '-u'

うーん。まぁ最低限。