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ボタンを押下
環境名を入力、Pythonのバージョンを指定しCreate
環境が作成された。pipなど、最低限のパッケージは導入されている。
2.2 Djangoパッケージのインストール
新規に作成した環境を真ん中のペインで選択し、右側でALLを選択しキーワードにdjango を入力Applyでインストール
2.3 仮想環境の確認
環境の三角ボタンを押すと、ターミナルを起動できる。
プロンプトに、venv の環境が表示される。
pip freeze で、インストールされているパッケージを確認
3. Spyder の起動
3.1 Spyderのインストール
Anaconda Navigatorの左ペインからHomeを選択し、Applications on にて、作成した環境を選択。Spyder の Install ボタンを押下して、Spyder環境を構築する。
インストールが終わると、Lanch ボタンになるので、押下して起動する。
3.2 Djangoパッケージの確認
起動したら、Djangoパッケージが利用可能か確認してみる。import django として、F9を押下すると、その行だけ実行される。エラーがないことを確認。」
4.Django REST 環境の構築
4.1 パッケージのインストール
http://www.django-rest-framework.org/#installation
Anaconda Navigator のEnvironment に戻って、作成した仮想環境(venv) のターミナルを開き、pip にて対象の仮想環境に関係パッケージをインストール。
pip install djangorestframework pip install markdown # Markdown support for the browsable API. pip install django-filter # Filtering support
5.Django REST プロジェクトの作成
5.1 Spyderプロジェクトの作成
Spyder メニュー Projects – New Project から新規プロジェクトを作成する。
プロジェクトを作成すると、Spyder がそのディレクトリ配下をプロジェクトとして管理してくれる。
5.2 DjangoプロジェクトをSpyderプロジェクトディレクトリに作成
上記で作成したSpyderプロジェクトが、Spyder メニュー 表示 – ペイン – プロジェクトエクスプローラー に表示されるので、コンテキストメニューから開くなどして、実際のパスを取得。
再度、Anaconda Navigator のEnvironment に戻って、作成した仮想環境(venv) のターミナルを開き、Django プロジェクトを作成する。
>django-admin.py startproject restsample
django プロジェクトが作成された。
6.Django プロジェクトの起動
6.1 起動設定
manage.py を開いて、Spyder メニュー – 実行 – 設定 を選択。
- 実行する設定を選択 : manage.py
- コンソール : Pythonに特化した新規コンソールで実行
- コマンドラインオプション : チェックONにし、runserver を入力(必要に応じポート番号)
6.3 課題としたが、プロセスの停止がSpyder上からうまくできない。コンソールに、現在のPython/IPython コンソールで実行を指定しても、IPython コンソールだとそもそもリクエストとがうまく処理されない。Python コンソールだと、リクエストは処理されるが、やはりプロセスの停止ができない。(2つプロセスができないだけこちらがましか?)
6.2 起動およびデバッグ
実行および、デバッグ実行可能
6.3 課題
起動したWebサーバープロセスを、Spyderから停止しようとしても停止できない。
表面上は停止状態なのだが、Webリクエストを受け付ける状態。
プロセスを確認すると、 -u オプションありと なしとで、2つ作成されていて、Spyder上から停止しても、-u オプション付きのプロセスしか停止されない。
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x see man page for details on internal buffering relating to '-u'
うーん。まぁ最低限。