Some fixes for compatibility with python3
diff --git a/predictionio/__init__.py b/predictionio/__init__.py
index 8863f65..b76338e 100644
--- a/predictionio/__init__.py
+++ b/predictionio/__init__.py
@@ -14,7 +14,10 @@
 
 # import packages
 import re
-import httplib
+try:
+    import httplib
+except ImportError:
+    from http import client as httplib
 import json
 import urllib
 
diff --git a/predictionio/connection.py b/predictionio/connection.py
index 3efd9ab..0ce02dc 100644
--- a/predictionio/connection.py
+++ b/predictionio/connection.py
@@ -1,7 +1,20 @@
 
-import Queue
+try:
+    import Queue
+except ImportError:
+    import queue as Queue
 import threading
-import httplib
+
+try:
+    import httplib
+except ImportError:
+    from http import client as httplib
+
+try:
+    from urllib import urlencode
+except ImportError:
+    from urllib.parse import urlencode
+
 import urllib
 import datetime
 import logging
@@ -64,7 +77,7 @@
         self.params = params
         # use queue to implement response, store AsyncResponse object
         self.response_q = Queue.Queue(1)
-        self.qpath = "%s?%s" % (self.path, urllib.urlencode(self.params))
+        self.qpath = "%s?%s" % (self.path, urlencode(self.params))
         self._response = None
         # response function to be called to handle the response
         self.rfunc = None
@@ -178,7 +191,7 @@
             mod_headers["Connection"] = "keep-alive"
             enc_body = None
             if body:  # if body is not empty
-                enc_body = urllib.urlencode(body)
+                enc_body = urlencode(body)
                 mod_headers[
                     "Content-type"] = "application/x-www-form-urlencoded"
                 #mod_headers["Accept"] = "text/plain"
diff --git a/tests/predictionio_test.py b/tests/predictionio_test.py
index 9f2e8d7..9442019 100644
--- a/tests/predictionio_test.py
+++ b/tests/predictionio_test.py
@@ -6,7 +6,10 @@
 import threading
 import time
 
-import httplib
+try:
+    import httplib
+except ImportError:
+    from http import client as httplib
 import urllib
 
 APP_KEY = "GToKwk78As0LBp2fAx2YNUBPZFZvtwy6MJkGwRASiD6Q77JjBnTaXBxzBTd52ICE" # replace this with your AppKey
@@ -17,7 +20,7 @@
     err = "Require PredictionIO Python SDK version >= %s" % MIN_VERSION
     raise Exception(err)
 
-print predictionio.__version__
+#print predictionio.__version__
 #predictionio.connection.enable_log()
 
 class TestPredictionIO(unittest.TestCase):
@@ -81,7 +84,7 @@
         # read, modify, write
         user3 = client.get_user(uid3)
         self.assertEqual(user3, {"pio_uid" : uid3, "pio_latlng" : [4.5,67.8], "pio_inactive" : True})
-        del user3["pio_uid"] 
+        del user3["pio_uid"]
         user3["pio_latlng"] = [5.6,10.11]
         user3["pio_inactive"] = False
         user3["custom1"] = "food"
@@ -125,7 +128,7 @@
         item3 = client.get_item(iid3)
         item4 = client.get_item(iid4)
         item5 = client.get_item(iid5)
-        
+
         del item1["pio_startT"] # pio_startT is automatically inserted, don't compare
         self.assertEqual(item1, {"pio_iid": iid1, "pio_itypes": ("t1", "t2", "t3") } )
         del item2["pio_startT"]
@@ -149,7 +152,7 @@
         # others still exist
         item3 = client.get_item(iid3)
         self.assertEqual(item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 4.99, "pio_profit": 2.0, "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], "pio_inactive": True } )
-        
+
         # read, modify, write
         del item3["pio_iid"]
         item3_itypes = item3.pop("pio_itypes")
@@ -158,7 +161,7 @@
         client.create_item(iid3, item3_itypes, item3)
         updated_item3 = client.get_item(iid3)
         self.assertEqual(updated_item3, {"pio_iid": iid3, "pio_itypes": ("t2",), "pio_price": 6.99, "pio_profit": 2.0, "pio_startT": 12345667, "pio_endT": 4567788, "pio_latlng": [1.345, 9.876], "pio_inactive": True, "custom1": "some value" } )
-        
+
         client.close()
 
     def test_item(self):
@@ -213,12 +216,12 @@
         client.identify("u111")
         for i in range(100):
             client.arecord_action_on_item("like", str(i))
-        
+
         n = 1
         while n > 0:
             n = client.pending_requests()
             time.sleep(0.1)
-            print n
+            #print n
 
         client.close()
 
@@ -233,7 +236,7 @@
         while n > 0:
             n = client.pending_requests()
             time.sleep(0.1)
-            print n
+            #print n
 
         client.close()