Sabtu, 09 Juli 2011

Py2Pyc: Compile Kode Python Mu Sendiri


.py atau .pyc ? Plain teks atau binari ? Hemm,.... sebenarnya sama saja. Di-compile atau tidak, program tetap bisa dijalankan. Tapi, dari beberapa sumber yang aku dapat, script Python yang telah di-compile, memiliki kelebihan disisi kecepatan eksekusi daripada script yang tidak di-compile. Kenapa ? Karena script, sebelum di-eksekusi akan dirubah dulu dari teks menjadi kode binari yang dimengerti oleh mesin.

Gambaran kasarnya, kompilasi terlihat seperti gambar dibawah ini, 





Oke, cukup basa basinya. Sekarang mari kita mulai untuk melakukan kompilasi :)

Untuk melakukan kompilasi, kita mempunyai tiga pilihan. Yaitu menggunakan program yang sudah ada yang bernama py2pyc (link download disertakan di akhir halaman), manual menggunakan Python shell, dan tulis sendiri script py2pyc sederhana. Dari ketiga pilihan itu, bagiku semuanya sama saja karena hasilnya juga sama, :D

Mari kita coba satu-satu, :)

Tapi sebelumnya, mari kita buat dulu sebuah script yang akan dijadikan sebagai percobaan. Gak usah ribet-ribet, kita buat script sederhana seperti berikut,

# python script

def Hello():
    # say hello :)
    print "Hello World!"
    # done!

# call the function
Hello()


Simpan di drive E:\ biar gampang nyarinya, ;-)





1. Menggunakan Program Py2Pyc

Langkah pertama adalah, download program Py2Pyc (link download disertakan di akhir halaman) kemudian lakukan instalasi seperti biasa. Buka program Py2Pyc, pilih [Options] -> [Select File]





Cari dimana letak script yang akan di-compile. Setelah ditemukan, klik [OK] untuk menandai kemudian pilih [Options] -> [Done]
 









Pilih [Options] sekali lagi dan pilih [Compile]. Selesai. Sangat sederhana kan ?





2. Menggunakan Perintah Baris (Python Shell)


Kompilasi script python menggunakan perintah baris sebenarnya lebih sederhana karena kita hanya perlu untuk mengetikan dua baris perintah saja.

Jalankan program Python, pilih [Options] -> [Interactive console] kemudian ketik perintah berikut,

>>> import py_compile
>>> py_compile.compile("E:\\sayhello.py")

Hanya itu dan selesai sudah. Script kita telah berhasil di-compile menjadi binari .pyc.




3. Menggunakan Script Sederhana

Cara ini sebenarnya sama dengan cara nomor 2 (dua). Hanya saja, kita tuliskan perintahnya kedalam sebuah file agar dapat dieksekusi kapan saja tanpa harus mengetikan ulang kode nya. Pada langkah ini, kita akan membuat script yang mirip dengan program Py2Pyc tapi hanya bisa meng-compile satu script saja dalam satu sesi tanpa fasilitas untuk menandai. Fasilitas file browsernya kita manfaatkan module yang bernama fm.

Mari kita buat scriptnya, :)

# CONTOH SCRIPT
#
# implementasi py2pyc sederhana
# script ini digunakan untuk meng-compile
# script python .py menjadi binari file .pyc
#
# oleh: retrobot
# Juni 2011
#

#
# import module yang diperlukan
import fm
import py_compile
import appuifw
import os

def SelectFile():
    '''Cari dan pilih file untuk di compile'''
    appuifw.app.title=u"Select .py File"
    # gunakan fungsi file manager dari module fm
    SF=fm.manager()
    # Periksa nilai SF. Apakah None ?
    # Bila None, berarti user menekan tombol cancel
    if SF !=None:
        # periksa ekstensi file. .py atau bukan
        if os.path.basename(SF)[-3:].lower()==".py":
            # bila ber-ekstensi .py, lakukan kompilasi
            try:
                py_compile.compile(SF)
                CDone()
            except:
                # bila kompilasi gagal, akan ditampilkan pesan ini
                appuifw.note(u"Error: %s: Tidak dapat di-compile"%os.path.basename(SF),"error")
                CError()
        else:
            # bila file yang dipilih tidak ber-ekstensi .py
            appuifw.note(u"%s: Bukan script python!"%os.path.basename(SF),"info")
            CError()
    else:
        # bila user menekan tombol Cancel
        appuifw.note(u"Kompilasi dibatalkan!","conf")
     
def CDone():
    appuifw.note(u"Kompilasi berhasil!","info")
 
def CError():
    appuifw.note(u"Kompilasi gagal!","info")
 
appuifw.note(u"Pilih file yang akan di-compile,...","info")
SelectFile()

# selesai


Simpan dan letakan di direktori Python (E:\\System\\Apps\\Python) agar dapat dijalankan melalui Python App. Sudah ? Buka aplikasi Python, pilih [Options] -> [Run Script] dan pilih script yang baru kita buat. 




Script akan langsung membuka tampilan file browser dan menunggu input dari kamu. [OK] atau [Cancel].






Eksekusi Script

Pada sesi terakhir dari tulisan ini, kita akan membahas tentang cara eksekusi script yang belum dan yang telah di-compile. Sebagai percobaan, kita gunakan perintah baris saja, :D

>>> execfile("E:\\sayhello.py")
Hello World!
>>>






Sangat mudah kan ? Lalu, bagaimana untuk script yang sudah di-compile ? Script yang sudah di-compile tidak dapat di-eksekusi dengan cara diatas. Bila dipaksakan, akan menyebabkan error pada Python Shell dan Python Shell harus di-restart.



Binari dari script Python bisa dijalankan menggunakan metode import. Metode yang biasa digunakan untuk memuat module Python. Dan tentu saja, lokasi script yang sudah dikompilasi harus terdaftar dalam Python Path. Bila belum, kita bisa menambahkan Path dimana letak script kita berada menggunakan module sys.

>>> import sys
>>> sys.path.append("E:\\")
>>> import sayhello
Hello World!
>>>


Dan bila ternyata perintah import sayhello tidak bekerja, kita masih bisa tetap memanggil fungsinya secara manual.

>>> import sayhello
>>> sayhello.Hello()
Hello World!
>>>


  
 
Download Page in PDF Format (+ Py2Pyc App + Sample Script)
Download Page in HTML Format (+ py2pyc app + Sample Script)
Download Page in Mobi format (+ py2pyc app + Sample Script)
Download Py2Pyc App + Sample Script

Tidak ada komentar:

Posting Komentar