Amazon

ラベル PyDev の投稿を表示しています。 すべての投稿を表示
ラベル PyDev の投稿を表示しています。 すべての投稿を表示

2011年11月27日日曜日

Aptana(Pydev)環境をWindowsからMacへ移動

MacBook Air(MacOS X Lion)を購入したので、
WindowsからMacへAptanaの環境を移行する方法をメモしておきます。

  1. Mac用のAptana Studioをダウンロード&インストール  
  2. Python 用 Google App Engine SDK 1.6のダウンロード&インストール
  3. WindowsからAptana Studio workspaceからプロジェクトフォルダをコピー
  4. Macの/Document/Aptana Studio 3 Workspaceの下に2.をコピー
  5. 各プロジェクト内の.pydevprojectファイルを編集
    * もしFinderで表示されていない場合はターミナルで以下のコマンドを打つと隠しファイルも表示されるようになる。
    % defaults write com.apple.finder AppleShowAllFiles TRUE
    逆に隠しファイルを隠す場合は
    % defaults write com.apple.finder AppleShowAllFiles FALSE

    .pydevprojectのファイルを編集

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?eclipse-pydev version="1.0"?>

    <pydev_project>
    <pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
    <pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
    <pydev_variables_property name="org.python.pydev.PROJECT_VARIABLE_SUBSTITUTION">
    <key>GOOGLE_APP_ENGINE</key>
    <value>C:\Program Files\Google\google_appengine</value>
    </pydev_variables_property>
    <pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
    <path>/harnivorous/src</path>
    </pydev_pathproperty>
    <pydev_pathproperty name="org.python.pydev.PROJECT_EXTERNAL_SOURCE_PATH">
    <path>${GOOGLE_APP_ENGINE}</path>
    <path>${GOOGLE_APP_ENGINE}/lib/django</path>
    <path>${GOOGLE_APP_ENGINE}/lib/webob</path>
    <path>${GOOGLE_APP_ENGINE}/lib/yaml/lib</path>
    <path>C:\Python27\Lib\site-packages\nose-1.1.2-py2.7.egg</path>
    </pydev_pathproperty>
    </pydev_project>



    a) C:\Program Files\Google\google_appengine ->

    /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine
    b) ${GOOGLE_APP_ENGINE}/lib/django -> ${GOOGLE_APP_ENGINE}/lib/django_1_2
    c) <path>C:\Python27\Lib\site-packages\nose-1.1.2-py2.7.egg</path> -> 削除
    d) <path>${GOOGLE_APP_ENGINE}/lib/simplejson</path> を追加
     
     
  6. Aptanaを起動してFile -> Import -> Existing Folder as New ProjectとしてProject TypeはデフォルトのWebのチェックをはずす
  7. GAEへのデプロイ(アップロード)起動オプションの作成。Run -> Run ConfigurationsでPyDev Google App RunをダブルクリックしてProjectは起動オプションを作りたいプロジェクト名を入れる。Browseを押しても出てこない場合は直接名前を入力。以下を設定したらApplyで保存
    -Main Tab-
    Project: THE_PROJECT_NAME
    Main Module: ${GOOGLE_APP_ENGINE}/appcfg.py
    -Arguments Tab-
    Program arguments: --email=GAE_ID --no_cookies update "${workspace_loc:THE_PROJECT_NAME/src}"
    Working directory: Defaultで${project_loc:_selected project name}

  8. GAEへのデプロイではなく、ローカルホストでの実行の場合は、上記の起動ウィザードのうち以下を変更。
    Main Module: ${GOOGLE_APP_ENGINE}/dev_appserver.py
    Program arguments: "{workspace_loc:THE_PROJECT_NAME/src}"

2011年1月4日火曜日

Google App EngineでDjango1.2を動かす3

[稼動環境] Aptana Studio 2.0.5  + Python 2.7.1+ Pydev 1.6.4+ Django 1.2.4 + Google App Engine Helper for Django 1.0.9

前回、前々回からのどハマリ続きのDjango 1.2.4 on GAE
Google App EngineでDjango1.2を動かす2
Google App EngineでDjango1.2を動かす1

引き続き動かないので、問題判別のために幾つか実験をば。

  • [Djangoのバージョン問題?] django.zipの中身を1.2.4から1.1.3に変更 -> 変わらず
  • [Eclipseの問題?] django.zipを消して、LocalのPCにインストールされているDjango1.2.4を使用、main.pyを通常のmain.pyに変更 -> "google.appengine.dist._library.UnacceptableVersionError"となる
  • [Eclipseの問題?] django.zipを消して、LocalのPCにインストールされているDjango1.2.4を1.1.3に変更、main.pyを通常のmain.pyに変更 -> 正常に稼動

以上の検証結果より、main.pyが悪さをしている様子。

もう一度main.pyを見直してみる。
もともとappengine_helper_for_django-r109.zipを展開したmain.pyは以下の通り



# Standard Python imports.
import os
import sys
import logging

from appengine_django import InstallAppengineHelperForDjango
InstallAppengineHelperForDjango()

from appengine_django import have_django_zip
from appengine_django import django_zip_path

# Google App Engine imports.
from google.appengine.ext.webapp import util

# Import the part of Django that we use here.
import django.core.handlers.wsgi

def main():
  # Ensure the Django zipfile is in the path if required.
  if have_django_zip and django_zip_path not in sys.path:
    sys.path.insert(1, django_zip_path)

ここでInstallAppengineHelperForDjango()の行でインストールされているDjangoのバージョンをチェックして、1.2以上だとgoogle.appengine.dist._library.UnacceptableVersionErrorをはいていた。

そこでGoogleの"Zipimport を使って App Engine で Django 1.0 を使用する"を参照して作成したmain.pyが以下


# Standard Python imports.
import os
import sys
import logging

from appengine_django import InstallAppengineHelperForDjango
InstallAppengineHelperForDjango()

from appengine_django import have_django_zip
from appengine_django import django_zip_path

# Google App Engine imports.
from google.appengine.ext.webapp import util

# Import the part of Django that we use here.
import django.core.handlers.wsgi


# Uninstall Django 0.96.
for k in [k for k in sys.modules if k.startswith('django')]:
    del sys.modules[k]

# Add Django 1.0 archive to the path.
django_path = 'django.zip'
sys.path.insert(0, django_path)
print sys.path

# Django imports and other code go here...
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'


def main():
  # Ensure the Django zipfile is in the path if required.
  if have_django_zip and django_zip_path not in sys.path:
      sys.path.insert(1, django_zip_path)

"# Uninstall Django 0.96."行から"def main()"までが追記したコード。

だけど、これをよくよく考えてみると"InstallAppengineHelperForDjango()"の後に、Django 0.96モジュールを抜いて、zipにしたDjango1.2.4をimportしている。

要は、せっかくモジュールのチェックをしたのにその後にモジュールを入れ替えているわけです。そりゃ意味ないわな。。。

ということでモジュール入れ替えを先にしたコードが以下。


# Standard Python imports.
import os
import sys
import logging

# Uninstall Django 0.96.
for k in [k for k in sys.modules if k.startswith('django')]:
    del sys.modules[k]

# Add Django 1.2.4 archive to the path.
django_path = 'django.zip'
sys.path.insert(0, django_path)

from appengine_django import InstallAppengineHelperForDjango
InstallAppengineHelperForDjango()

from appengine_django import have_django_zip
from appengine_django import django_zip_path

# Google App Engine imports.
from google.appengine.ext.webapp import util

# Import the part of Django that we use here.
import django.core.handlers.wsgi

def main():
  # Ensure the Django zipfile is in the path if required.
  if have_django_zip and django_zip_path not in sys.path:
      sys.path.insert(1, django_zip_path)

これで正常に稼動した。

今回のどハマリの原因は
Eclipseの起動設定とGoogle App Engine Helper for DjangoのDjango受け入れバージョン問題, Django 1.2の使用, という3つの点が相まって問題を複雑にしていたわけですね。。。(--;

Google App EngineでDjango1.2を動かす2

[稼動環境] Aptana Studio 2.0.5  + Python 2.7.1+ Pydev 1.6.4+ Django 1.2.4 + Google App Engine Helper for Django 1.0.9

前回(google App EngineでDjango1.2を動かす1)の続き

エラーの中身を見るあたり"ImportError: No module named antlr3"とのことで、
要はantlr3のモジュールが見つからないということ。
antlr3モジュールはgoogle_appengine\libの下にあるが、どうもこのフォルダへのパスが通ってなかったのが原因ぽい。


ということで、プロジェクトを右クリックしてProperties -> PyDev - PYTHONPATH -> External Libraryに
${GOOGLE_APP_ENGINE}/lib/antlr3
${GOOGLE_APP_ENGINE}/lib/ipaddr
${GOOGLE_APP_ENGINE}/lib/fancy_urllib
を追加。
自分の環境では、${GOOGLE_APP_ENGINE}はC:\Program Files\Google\google_appengineを指す


さて改めて実行したが、またエラー。今度は
"ImportError: No module named admin.options"
これはdjango.zipファイルのdjango\contrib\admin\options.pyを指している様子。

GAEのドキュメント"Zipimport を使って App Engine で Django 1.0 を使用する"ではadminフォルダを消してもいいって書いてあるのに。。。
仕方ないのでDjangoフルパッケージを再度django.zipにしてプロジェクトのdjango.zipと置き換える。

気を取り直して再実行。けどまたエラー。
"google.appengine.tools.dev_appserver.AppConfigNotFoundError"です。
このエラーはapp.yamlファイルが見つからないのが原因のようです。
appengine_helper_for_django-r109.zipファイルをimportした際にsrcフォルダ下にちゃんとapp.yamlファイルがあるのに正しく認識されないのはどうしてだ?と思っていたら、
今度はEclipse側の設定の問題だったようです。

Run -> Run Configurationで、先ほど作成したPydev Google App Engineの起動設定のArgumentsのWorking directoryをDefaultの${project_loc}からOtherにチェックを入れて${project_loc}/srcに設定を変更。



これで再度実行。すると、consoleに色々とメッセージが出る。

"INFO:root:zipimporter('C:\\Documents and Settings\\Administrator\\My Documents\\Aptana Studio Workspace\\DjangoOnGAE\\src\\django.zip', 'django\\contrib\\')"
Djangoライブラリが読み込まれている


"WARNING:root:Could not read datastore data from c:\temp\django_djangoongae.datastore"
django_djangoongae.datastoreが見つからないと言われるが、そもそもファイルがないからそのまま放置

"WARNING:root:Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging"
これもnamed_imagingモジュールがないと言われているが解決策はGAEのサイトにある。とりあえず今は画像を使わないのでこれも放置


とはいえ
"INFO:root:Running application djangoongae on port 8001: http://localhost:8001"が表示されたので起動しているっぽいのでアクセス。

するとまだエラーが出る。

ChromeでアクセスするとResolver404エラー

 EclipseのConsoleにも"django\core\handlers\wsgi.py:222:  RuntimeWarning: Parent module 'django.core.handlers' not found while handling absolute import"などが表示されて、"INFO:root:"GET / HTTP/1.1" 500 -"が出ている。

むー。なかなか先は長いですね。


2011年1月3日月曜日

Google App EngineでDjango1.2を動かす1


Google App Engine上でDjangoを使用する場合、幾つかの制限がある。
それを補完するためにGoogle App Engine Helper for Djangoというツールが提供されている。
使用方法はこちらを参照。

ただ、このガイドではEclipseから利用する方法が書いていないので、今回はこの手順をまとめてみる。

使用するのは
[稼動環境] Aptana Studio 2.0.5  + Python 2.7.1+ Pydev 1.6.4+ Django 1.2.4 + Google App Engine Helper for Django 1.0.9

1. Aptana(Eclipse)を起動し、Pydev Package Explorerを右クリックしてNew->Projectを選択し、Pydev->Pydev Google App Engine Projectを選択


2. Project nameを適当につけて、Project typeをPython, Grammar Versionを2.7にしてNext>

3. Google App Engine Dictionaryのパスを指定。google_appengineフォルダを指定すると、自動で${GOOGLE_APP_ENGINE}, ${GOOGLE_APP_ENGINE}/lib/django, ${GOOGLE_APP_ENGINE}/lib/webob, ${GOOGLE_APP_ENGINE}/lib/yaml/libが追加される

4. application id registered for this projectをGAEに登録しているIDとし、templateはひとまずEmpty Projectとする

5. できたプロジェクトのsrcフォルダ内に、Google App Engine Helper for Djangozipファイルをimportする。

6. importするファイルタイプをArchive Fileを選択

7. ダウンロードしたzipファイルを選択
 8. プロジェクトにzipファイルの中身がimportされる。

9.appengine_helper_for_djangoパッケージは不要なので、それより下のappengine_djangoパッケージなどをsrcフォルダに移動して、appengine_helper_for_djangoフォルダを削除する

10. プロジェクトを選択肢、Run -> Run ConfigurationでPydev Google App Runをダブルクリック。Nameは適当に入力し、Projectを実行したいプロジェクトを選択、Main Moduleをimportしたmanage.pyを選択

 11. argumentsタブでprogram argumentsに"runserver"を入力して、Run

12.実行後コンソールには"google.appengine.dist._library.UnacceptableVersionError"が表示される

どうやらappengine_djangoパッケージにある__init__.pyのなかでDjangoのバージョンを1.0か1.1に限定しているようで、このままでは使用できないようだ。

次回(Google App EngineでDjango1.2を動かす2)へ続く。

2010年12月28日火曜日

AptanaでDjango Projectの実行

まだ使い慣れないAptanaでDjango Projectの実行で一部ハマったのでメモ。

1. PyDev Django Projectを作成
Pydev Package Explorer上で右クリックしてNew->ProjectでPydev->Pydev Django Projectを選択

2. 参照するプロジェクトの選択
参照するプロジェクトを聞かれるが今回初めて作るので、特に選択せずに"Next >"

3. Djangoのバージョンとデータベース設定
Django versionを1.2 or laterとし、Database Engineをsqlite3を選択

4. Webサーバーのテスト
PyDev Package Explorerから作成したプロジェクトを選択して、メニューバーのRun->Run Configurationを選択
 右側"Pydev Django"をダブルクリックしてNew_configurationを作成。
Projectは"Browse"をクリックして、作成したプロジェクトを選択。
Main Moduleは"Browse"をクリックして、作成したプロジェクトの中にあるmanage.pyを選択

"Arguments"タブに移動して"Program arguments"に"runserver localhost:8001 --noreload"を記入して"Run"をクリック。

ここでの引数の意味は
localhost:8001 localhostの8001番でWebサーバーを起動させる
--noreload      サーバの稼働中にいかなる Python コードの変更も検知せず既にメモリ上に読み込まれている Python モジュールを利用する

今回はテストなので--noreloadをつけているが、開発の過程ではWebサーバーは起動しっぱなしにして適宜コードを修正してテストすることになるので、このオプションははずす。
その他の引数に関しては、Djangoのマニュアルを参照




しばらくするとConsoleにDevelopment server is running at http://localhost:8001/ が表示され、Webサーバーが起動したことがわかる。

ブラウザでhttp://localhost:8001/ にアクセスしてみるとIt worked!というページが表示されれば、起動確認完了。


とりあえず何でハマったかというと、"runserver"をどこから指定すればよいかわからなかったところ。というのも、Pydev Package Explorer上でプロジェクトを右クリックし Django-> custom command (manage.py ${custom_command})とあるので、これをクリックし

コマンド入力のウィンドウで"runserver"と入力して"OK"をクリックしたところ

ステータスバーに"Refresh on finish"が表示されたままConsoleには何も表示されず15分くらい待っても変化なし。


マニュアル読めって感じですかね。。。






PythonのWebアプリケーション開発環境(Aptana + PyDev)

Webアプリケーション開発にあたり前回までにCentOSのセットアップPython+Djangoのセットアップを行った。

次に統合開発環境(Integrated Development Environment :IDE)として何を使うか?
ひとまずEclipseにプラグインを入れ込んでいけば何とでもなるのだけど、余分なプラグインで重くなるのは嫌なので、とりあえず出来上がってる開発環境を使おう。

WebアプリケーションということでHTMLやCSSの編集機能は絶対必要になるので、HTML/XML/CSS/JavaScriptの統合開発環境であるAptanaを候補に考えていたら、Pythonの開発用プラグインとしてPyDevがあるようです。他にもRuby On Railsの開発用プラグインとしてRadRailsがあったり、Adobe AIR開発用プラグインがあったりと、Webアプリケーション開発環境としてはかなり充実している様子。

Windows環境へのインストール手順と利用方法は以下の通り。

1. Aptanaをダウンロード
Aptana Studioのサイトからイメージをダウンロード。今回は"Standalone Version"を選択

2. インストーラーを実行してインストール
1でダウンロードしたAptana_Studio_Setup_2.0.5.exeをダブルクリックしてインストール

3. Aptana起動
インストールが完了したらデスクトップにできたAptana Studio 2.0のアイコンをダブルクリックして起動

4. Aptana My Studioの表示
Aptanaを起動するとMy Studioというタブが表示される。もし表示されていなければメニューバーのウィンドウ->My Studioで表示される


5. PyDevのインストール
My StudioタブでPluginsという項目をクリックし、その中のPlatformタブのAptana PyDevの"Get it"をクリックするとプラグインのインストールウィザードが起動する。

PyDevの項目にチェックを入れて"Next >"。(PyDev Mylyn Integrationはオプション)インストールするプラグインの一覧が表示されるので確認して"Next >"。プラグインの使用許諾が表示されたら中身を確認して問題がなければ"I accept the terms of the license agreements"にチェックを入れて"Finish"。再起動したらインストール完了。

6. PyDevのパースペクティブ(開発画面)を確認
Aptanaが再起動したら右上のパースペクティブの選択項目の中に"PyDev perspective"画追加されているのを確認し、クリックしてPyDevパースペクティブを開く。もし追加されていなければ"Open Perspective"のボタンをクリックしてPyDevのパースペクティブを開く。


これでインストール完了なので、あとは.pyのファイルをドラッグ&ドロップで持ってこればコードアシスト機能が使えるようになる。

次回はこのPyDevを使ってGoogle App Engine Projectを作成してみよう。

Amazon3