Ubuntu Eclipse IDE ve Python ile App Engine SDK konfigürasyonu

Ubuntu'da eclipse ide ile python kullanarak app engine uygulamaları geliştirmek için, Eclipse ide'nin google app engine sdk ile nasıl konfigüre edileceğinden bahsedeceğim.

İlk olarak eclipse classic 3.6.2'yi indirin ve bir klasöre indirdiğiniz eclipse-SDK-3.6.2-linux-gtk-x86_64.tar.gz dosyasını çıkarın. Çıkardığınız dosyalar içinden Eclipse'yi çift tıkladığınızda IDE çalışacaktır. Böylelikle Ubuntu üzerinde Eclipse'nin son sürümünüde kurmuş oldunuz. Bu işlemlerden sonra sıra Pydev eklentisini eclipse ide'ye kurmakta.

Eclipse Help menüsünden install new software seçip açılan menüden add tuşuna basarak aşağıdaki
biçimde doldurun ve ok tuşuna basın.


Pydev
http://pydev.org/updates

Daha sonra pending yazısı çıkacak ve eclipse kurulması gereken paketleri bulduğunda ekran görüntüsü aşağıdaki gibi olacak.



Buradan PyDev'i işaretliyoruz Pydev for eclipse 'de işaretlenmiş oluyor. Next tuşu ile ilerliyoruz sözlemeyi kabul ediyormusunuz kısmından accept seçip finish dedikten sonra işimiz bitiyor.

Sonrasında ise GAE (Google App Engine) SDK'yı aşağıdaki adresten indiriyoruz.

http://code.google.com/intl/tr-TR/appengine/downloads.html

Google App Engine SDK for Python bölümünden Linux/Other Platforms kısmından google_appengine_1.4.3.zip dosyasını indirin.

Sonra home dizininize (cd home/kullanıcı_adınız) gidip aşağıdaki adımları terminalden uygulayın.

wget http://googleappengine.googlecode.com/files/google_appengine_1.4.3.zip
unzip google_appengine_1.4.3.zip
rm google_appengine_1.4.3.zip


Dediğim adımları uyguladığınızda home dizininiz içerisinde google_appengine isimli bir klasör oluşacak ve içerisinde Google App Engine SDK bulunacak.(Tabi python için olan gae sdk)

Bendeki durum şöyle /home/r00t/google_appengine

Terminal penceresinden Google App Engine dosyalarına, scriptlerine ulaşmak için klasörümüzün bulunduğu dizini Ubuntu PATH değişkenine ekleyeceğiz.

Aşağıdaki komutunu terminalden girip entera basın.

export PATH=$PATH:/home/r00t/google_appengine/

$PATH'e eklediğiniz yukarıdaki satırı kalıcı hale getirmek için .bashrc dosyasını açıp içerisine aşağıdaki satırı ekleyin. .bashrc dosyası gizlidir ve /home/kullanıcı_adı dizini içerisinde bulunur.

sudo nano /home/r00t/.bashrc

export PATH=${PATH}:/home/r00t/google_appengine/

Ben .bashrc dosyasının en alt satırına ekledim. Siz aşağıdaki gibi ekleyeceksiniz (kullanıcı_adınız kendinize göre değiştirin).

export PATH=${PATH}:/home/kendi_kullanıcı_adınız/google_appengine/

Burada demek istediğim şudur. Şimdi yukarıdaki komutu çalıştırmadan evvel terminalden aşağıdaki komutu yazıp entera basın.

echo $PATH

aşağı yukarı şuna benzer bir çıktı alacaksınız.

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

dediğim komutdan sonra ise çıktı şu biçimde olacak. (echo $PATH dediğinizde)

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/r00t/google_appengine/

Artık /home/kullanıcı_adınız/google_appengine/ dizini içerisinde dosyalara heryerden ulaşabilirsiniz. Sürekli olarak dizin içerisine girmenize oradan çalıştırmanıza v.s. gerek kalmamış oldu.

Google App Engine Python 2.5.2 versiyonunu tavsiye etmektedir. Ubuntu'ya python 2.5 kurmak için aşağıdaki adımları takip edin.

Terminal'i açarak aşağıdaki komutları sırası ile uygulayın.

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python2.5


Kurulumdan sonra Google App Engine kurduğumuz klasöre gidiyoruz ve dev_appserver.py dosyasını açıp dosyanın en üstünde yazan.

#!/usr/bin/env python

satrını

#!/usr/bin/env python2.5

biçiminde değiştiriyoruz.

Bunu yapma nedenimiz python 2.5 ile çalışmasını sağlamak aksi halde default python versiyonumuz olan 2.6 ile çalışacaktır.

Eclipse'nin window penceresinden preferences'e tıklayın. Sol menüden Interpreter-Python seçip,

açılan Python Interpreters penceresinden New butonuna tıklayıp yeni kurduğumuz python 2.5 i Python interpreters bölümüne ekliyoruz. aşağıdaki resme bakabilirsiniz.


Eclipse otomatik olarak Python 2.5 paketlerini bulacaktır. Tekrar bir pencere açılacak onada ok dediğinizde Python interpreters penceresi aşağıdaki gibi olacaktır.


son olarak Ok tuşuna basıp bu pencereyide kapatıyoruz.

Sıra geldi python ve google app engine sdk yı kullanarak merhaba dünya uygulaması yapmaya. (Template kullanıcaz default cgi kullanarak çalışan. deneme amaçlı)

Eclipse'nin File -> New -> Project menüsünden PyDev'i bulun ve Pydev Google App Engine Project seçip Next tuşunu tıklayın.


Sonraki adımda Project Name için deneme yazın Project type bölümünden Choose the project type kısmından Python'u, Grammer Version bölümünden ise 2.5'i seçin.

Çünkü google python 2.5.2 versiyonunu öneriyor (http://code.google.com/intl/tr-TR/appengine/docs/whatisgoogleappengine.html) ve bunuda kurmuş bulunuyoruz. Interpreter bölümünden ise biraz evvel eklediğimiz python25'i seçin.


Üstdeki resimdeki gibi doldurduktan sonra next butonuna basıp ilerleyin.

Google App Engine Directory bölümünü soracak olan bir penrece ile karşılaşacaksınız. Burada google app engine sdk nın olduğu dizini belirtmeniz gerekiyor. Yukarıda anlattığım gibi yaptıysanız dizininizin yeri şu adresde olmalı. /home/kullanıcı_adınız/google_appengine.

Ekledikten sonra next butonu ile ilerleyin.ben /home/r00t/google_appengine yazıp next butonuna tıkladığımda aşağıdaki gibi bir pencere çıktı ok butonuna basıp kapatın.


ok tuşuna bastıkdan sonra son hali aşağıdaki resimdeki gibi olacaktır.


next ile ilerleyin.

Please select the template to use to create the project penceresi açıldığında

resimdeki gibi doldurup finish tuşuna basın.


Şuraya kadar yazdıklarımı doğru biçimde yaptıysanız eclipse'nin PyDev Package Explorer penceresinde deneme isimli projeniz aşağıdaki resimdeki gibi oluşmuş olacaktır.


src klasörü içerisinde varsayılan olarak iki adet dosya (app.yml ve helloworld.py) bulacaksınız.

app.yml

application: deneme
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
script: helloworld.py

helloworld.py

print 'Content-Type: text/plain'
print ''
print 'Hello, world!'

ve eclipse ide de src klasörünü seçip run butonuna bastığınızda Console ekranında aşağıdaki gibi
bir görüntü alacaksınız.

Finding files... done.
Importing test modules ... Content-Type: text/plain

Hello, world!
done.

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK


Fakat bu biçimde çalıştırmak işimize gelmez.

Yapmanız gereken src klasörü seçili iken projenizi run as menüsünün bir alt menü butonu olan Pydev:google app run butonunu seçerek çalıştırmak.

Src klasörüne sağ tıklayıp run as menüsüne buradan da ulaşabilirsiniz.

Böylelikle app engine sdk ile gelen http server yardımı ile projenizi test edebilirsiniz.

Zaten dediğim biçimde çalıştırdığınızda eclipse Console penceresinde aşağıdaki gibi yazılar çıkacak ve uygulamanızı http://localhost:8080 adresinden yayınladığını söyleyecektir.

INFO 2011-04-11 22:15:33,233 dev_appserver_main.py:543] Running application deneme on port 8080: http://localhost:8080
INFO 2011-04-11 22:15:40,331 dev_appserver.py:3951] "GET / HTTP/1.1" 200 -
INFO 2011-04-11 22:15:40,709 dev_appserver.py:3951] "GET /favicon.ico HTTP/1.1" 200 -


Aşağıdaki gibi hata alırsanız eğer,

WARNING 2011-04-11 22:15:33,229 dev_appserver.py:4394] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging

Google App Engine Imaging Api'yi kullanmanız için PIL paketinin python 2.5 sürümü için olanını kurmanız gereklidir. Python 2.5 için kolayca python paketlerini kurmak için ilk olarak setuptools kuralım. Aşağıdaki komutları terminalden sırası ile girip entera basın.

wget http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c11-py2.5.egg
sudo sh setuptools-0.6c11-py2.5.egg


Daha sonra ise PIL python 2.5 paketini kuralım.

sudo apt-get install python2.5-dev
sudo apt-get install libjpeg62-dev
sudo easy_install-2.5 pil


Bu adımlardan sonra PIL yüzünden çıkan ImportError: No module named _imaging hatasını almayacaksınız.

Peki aşağıdaki hatadan nasıl kurtulucaz.

WARNING 2011-04-11 22:15:27,355 urlfetch_stub.py:106] No ssl package found. urlfetch will not be able to validate SSL certificates.

http://code.google.com/appengine/kb/general.html#rpcssl burada ssl sertifikasının neden gerektiği hakkında açıklamalar bulunmakta isterseniz okuyabilirsiniz.

Bu hatadan kurtulmammız için http://pypi.python.org/pypi/ssl/ adresinden ssl-1.15.tar.gz paketini indiyorsunuz.

Ben /home/r00t/Paketler (Paketler dizinini ben oluşturdum sizde olmayacaktır.) dizini içerisine indirdim.

Daha sonra arşivi açtığınızda ssl-1.15 isimli bir klasöre dosyalar çıkacak.

cd /home/kullanıcı_adınız/Paketler/ssl-1.15/ komutu ile dizinin içerisine gidin.

ilk olarak terminalden

python2.5 setup.py build

komutunu çalıştırın.(Buraya dikkat python değil kurduğumuz version 2.5 o yüzden python2.5 yazıcaksınız) Eğer bir sorun yoksa

sudo python2.5 setup.py install

komutunu çalıştırıp işlemi bitirin. Eğer python2.5 setup.py build komutundan sonra aşağıdaki hataları alırsanız,

r00t@ubuntu:~/Paketler/ssl-1.15$ python2.5 setup.py build
looking for /usr/include/openssl/ssl.h
looking for /usr/local/ssl/include/openssl/ssl.h
looking for /usr/contrib/ssl/include/openssl/ssl.h
Traceback (most recent call last):
File "setup.py", line 167, in
ssl_incs, ssl_libs, libs = find_ssl()
File "setup.py", line 142, in find_ssl
raise Exception("No SSL support found")
Exception: No SSL support found


sudo apt-get install libssl-dev

paketini kurup tekrar python2.5 setup.py build komutunu deneyin.

looking for /usr/include/openssl/ssl.h
looking for /usr/include/krb5.h
looking for /usr/kerberos/include/krb5.h
running build
running build_py
running build_ext
building 'ssl._ssl2' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I./ssl/2.5.1 -I/usr/include/python2.5 -c ssl/_ssl2.c -o build/temp.linux-x86_64-2.5/ssl/_ssl2.o
In file included from ssl/_ssl2.c:76:
./ssl/2.5.1/socketmodule.h:45: fatal error: bluetooth/bluetooth.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1


Yukarıdaki gibi hatalar alırsanız. Aşağıdaki paketi kurun.

sudo apt-get install libbluetooth-dev

Ve tekrar python2.5 setup.py build komutunu çalıştırın. Büyük ihtimal sorun yaşamayacaksınız daha sonra ise sudo python2.5 setup.py install komutunu çalıştırın.

Diyelim eclipse ile run as bölümünden projenizi çalıştıramadınız (Dikkatli biçimde yazıyı takip ettiyseniz ve anlattıklarımı yaptığınızda sorun çıkacağını sanmıyorum) yada manuel olarak app engine serverı çalıştırmak isterseniz. Terminal penceresi açarak dev_appserver.py uygulama_dizininiz yazıp entera bastığınızda projeniz çalışacaktır.

örnek: dev_appserver.py workspace/deneme/src/

Aşağıdaki videoyu ise tüm bu ayarları yaptıktan sonra eclipse ide ve app engine sdk nın nasıl çalıştığını görebilmeniz için hazırladım. Webapp framework'ünü kullanarak basit bir app engine merhaba dünya uygulaması yazdım. Videoda app.yml içine yazacaklarımı index.py içerisine yazmışım (: sonra düzenledim o bölümde kafanız karışmasın. Videoyu izlerseniz eclipse ile app engine uygulamanızı debug edebileceğinizide göreceksiniz (aslında debug demek doğru değil ama en azından yaptığınız hatayı görebiliyorsunuz). Örnek: app.yml dosyasında bir karakter boşluk koymayı unuttuğumda verdiği hatayı Console penceresinde görebilirsiniz.

4 Yorum:

  1. Adsız

    Google App Engine Development Console una nasıl erişiciz peki?
    Datastore Viewer a girmeden nasıl çalışabiliriz?

    4/19/2011  


  2. app engine local çalışma ortamında hangi url'den yayınlandıysa örnek:http://localhost:8080 sonuna _ah/admin/ eklediğinde erişebileceğini göreceksin. Demek istediğim şu :

    http://localhost:8080/_ah/admin/
    http://localhost:8080/_ah/admin/datastore

    4/19/2011  


  3. Adsız

    app engine videonuzu izledim keşke yazdığınız python kodları ile ilgili bilgi verseydiniz.

    4/28/2011  


  4. Videodaki amaç google app engine üzerinde python kullanarak uygulama geliştirme değildi.Sadece yazdıklarımdan sonra çalışma ortamınızın nasıl olacağı hakkında fikir edinmeniz için basit bir testti.

    4/29/2011  


Yorumunuzu belirtebilirsiniz