NitrousでDjango (Python) 開発はじめます
Ruby on Railsは大好きなんですけど、本業が分析屋さんなので、やっぱりpythonがやりたいな…と思い、Nitrous+Herokuで開発してみることにしました。
はじめは、ローカル環境でPyCharm使ってKaggleのデータを機械学習させていたんですけど、やっぱりウェブサービスとして形に残らないと張り合いがないので、表題の通りとなりました。
追記:過去に同じことをしようと試みていたみたいです…。もうすっかり忘れていましたが。
ワークスペースの作成とIDEの起動
DJangoのコンテナーを作成します。Stack Templateの中からDjangoを選択して、コンテナ名に任意の名前を入力して、Nextを押します。
次にワークスペースを作成します。ワークスペース名に任意の名前を入力して、Regionは近くの地域を選択、PlanはStarterを選択してから、Createを押します。
プランは後からアップグレードできるので、今回は、Starterではじめます。
Python開発環境の構築
コーディングを始める前に開発環境を作成します。Pythonでは、virtualenvというツールでPythonのバージョンとモジュール(ライブラリ?)の管理ができます。Nitrous.ioではvirtualenvがプリインストールされているので、このツールを使って仮想環境を構築します。
~ virtualenv --no-site-packages -p /usr/bin/python3.4 tutorial-env
"--no-site-packages"は、まっさらな仮想環境を作る(既にインストールされているモジュールをこれから作る仮想環境に取り込まないようにする)オプションです。
"-p /usr/bin/python3.4"は、対象ディレクトリに格納されているPythonで仮想環境を作るオプションです。指定しない場合は、"Python -V"で表示されるバージョンの仮想環境が作られれます。
"tutorial-env"は、仮想環境名です。好きな名前を定義してください。
コマンドを実行すると、ルートディレクトリ配下に"tutorial"ディレクトリが作成されます。
仮想環境が作成されたら、以下のコマンドで仮想環境を立ち上げます。
~ source tutorial-env/bin/activate
(tutorial-env) ~
ターミナルの先頭に仮想環境名が表示されていれば起動は完了です。
NOTE:virtualenvについて、もう少し詳しい説明を読みたい方は、以下の記事を読んでみてください。
環境の確認と更新
開発環境の状態を確認してみます。まずは、Pythonのバージョンを確認します。
次にPythonのパッケージ管理ツール"pip"で、インストールされているパッケージの一覧を確認します。
(tutorial-env)→ ~ pip list -o
pip (Current: 1.5.4 Latest: 7.1.2)
setuptools (Current: 2.2 Latest: 18.5)
"list"オプションは、pipでインストールされているパッケージの一覧を表示するオプションです。
"-o"は、アップデート可能なバージョンを表示するためのオプションです。
非常に古いバージョンのパッケージがセットアップされているようですので、パッケージのアップデートを行います。全部最新にするようなデフォルトコマンドは無いので、今回は一つ一つアップデートしていきます。
(tutorial-env)→ ~ pip install -U pip
(tutorial-env)→ ~ pip install -U setuptools
(tutorial-env)→ ~ pip list
pip (7.1.2)
setuptools (18.5)
"install -U パッケージ名"で、インストールされているパッケージのアップグレードが可能です("-U"は"--upgrade"でも代替可能です)。
以上でセットアップは完了です。
NOTE:pipのパッケージを一括アップグレードする方法も一応あります。stackoverfolowの記事では、パイプでコマンドをつなげてワンライナーで記述する方法と、"pip-review"というパッケージをインストールする方法が紹介されています。
~ virtualenv --no-site-packages -p /usr/bin/python3.4 django-env
~ virtualenv --no-site-packages -p /usr/bin/python3.4 django-env
~ virtualenv --no-site-packages -p /usr/bin/python3.4 django-env
~ virtualenv --no-site-packages -p /usr/bin/python3.4 django-envvirtualenv --no-site-packages django-env