diff --git a/googleapiclient/discovery.py b/googleapiclient/discovery.py
index 03a3ea7..0c90d70 100644
--- a/googleapiclient/discovery.py
+++ b/googleapiclient/discovery.py
@@ -16,6 +16,7 @@
 
 A client library for Google's discovery based APIs.
 """
+from __future__ import absolute_import
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 __all__ = [
@@ -48,7 +49,7 @@
 
 # Third-party imports
 import httplib2
-import mimeparse
+from . import mimeparse
 import uritemplate
 
 # Local imports
@@ -329,7 +330,7 @@
     The size as an integer value.
   """
   if len(maxSize) < 2:
-    return 0L
+    return 0
   units = maxSize[-2:].upper()
   bit_shift = _MEDIA_SIZE_BIT_SHIFTS.get(units)
   if bit_shift is not None:
diff --git a/googleapiclient/http.py b/googleapiclient/http.py
index d54ce5e..d46e7b1 100644
--- a/googleapiclient/http.py
+++ b/googleapiclient/http.py
@@ -18,6 +18,7 @@
 object supporting an execute() method that does the
 actuall HTTP request.
 """
+from __future__ import absolute_import
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
@@ -28,7 +29,7 @@
 import httplib2
 import json
 import logging
-import mimeparse
+from . import mimeparse
 import mimetypes
 import os
 import random
@@ -42,13 +43,13 @@
 from email.mime.multipart import MIMEMultipart
 from email.mime.nonmultipart import MIMENonMultipart
 from email.parser import FeedParser
-from errors import BatchError
-from errors import HttpError
-from errors import InvalidChunkSizeError
-from errors import ResumableUploadError
-from errors import UnexpectedBodyError
-from errors import UnexpectedMethodError
-from model import JsonModel
+from .errors import BatchError
+from .errors import HttpError
+from .errors import InvalidChunkSizeError
+from .errors import ResumableUploadError
+from .errors import UnexpectedBodyError
+from .errors import UnexpectedMethodError
+from .model import JsonModel
 from oauth2client import util
 
 
diff --git a/googleapiclient/mimeparse.py b/googleapiclient/mimeparse.py
index 8038af1..68d3a3c 100644
--- a/googleapiclient/mimeparse.py
+++ b/googleapiclient/mimeparse.py
@@ -21,6 +21,7 @@
  - best_match():        Choose the mime-type with the highest quality ('q')
                           from a list of candidates.
 """
+from functools import reduce
 
 __version__ = '0.1.3'
 __author__ = 'Joe Gregorio'
@@ -68,7 +69,7 @@
     necessary.
     """
     (type, subtype, params) = parse_mime_type(range)
-    if not params.has_key('q') or not params['q'] or \
+    if 'q' not in params or not params['q'] or \
             not float(params['q']) or float(params['q']) > 1\
             or float(params['q']) < 0:
         params['q'] = '1'
@@ -99,7 +100,7 @@
         if type_match and subtype_match:
             param_matches = reduce(lambda x, y: x + y, [1 for (key, value) in \
                     target_params.iteritems() if key != 'q' and \
-                    params.has_key(key) and value == params[key]], 0)
+                    key in params and value == params[key]], 0)
             fitness = (type == target_type) and 100 or 0
             fitness += (subtype == target_subtype) and 10 or 0
             fitness += param_matches
diff --git a/googleapiclient/model.py b/googleapiclient/model.py
index 0f0172c..98e608e 100644
--- a/googleapiclient/model.py
+++ b/googleapiclient/model.py
@@ -21,6 +21,7 @@
 for converting between the wire format and the Python
 object representation.
 """
+from __future__ import absolute_import
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
@@ -29,7 +30,7 @@
 import urllib
 
 from googleapiclient import __version__
-from errors import HttpError
+from .errors import HttpError
 
 
 dump_request_response = False
diff --git a/samples/coordinate/coordinate.py b/samples/coordinate/coordinate.py
index 00a1f62..61622db 100644
--- a/samples/coordinate/coordinate.py
+++ b/samples/coordinate/coordinate.py
@@ -35,6 +35,7 @@
 
   $ python coordinate.py -t teamId --logging_level=DEBUG
 """
+from __future__ import print_function
 
 __author__ = 'zachn@google.com (Zach Newell)'
 
diff --git a/samples/django_sample/manage.py b/samples/django_sample/manage.py
index 0b932da..b2f07f1 100755
--- a/samples/django_sample/manage.py
+++ b/samples/django_sample/manage.py
@@ -1,7 +1,8 @@
 #!/usr/bin/python
+from __future__ import absolute_import
 from django.core.management import execute_manager
 try:
-    import settings # Assumed to be in the same directory.
+    from . import settings # Assumed to be in the same directory.
 except ImportError:
     import sys
     sys.stderr.write("""Error: Can't find the file 'settings.py' in the
diff --git a/samples/urlshortener/urlshortener.py b/samples/urlshortener/urlshortener.py
index 89d1115..00d3bfe 100644
--- a/samples/urlshortener/urlshortener.py
+++ b/samples/urlshortener/urlshortener.py
@@ -32,6 +32,7 @@
 
   $ python urlshortener.py --logging_level=DEBUG
 """
+from __future__ import print_function
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index 032975c..3fdebb2 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -140,7 +140,7 @@
     parameters = self._base_fix_up_parameters_test(self.zoo_get_method_desc,
                                                    'GET', self.zoo_root_desc)
     # Since http_method is 'GET'
-    self.assertFalse(parameters.has_key('body'))
+    self.assertFalse('body' in parameters)
 
   def test_fix_up_parameters_insert(self):
     parameters = self._base_fix_up_parameters_test(self.zoo_insert_method_desc,
@@ -163,15 +163,15 @@
 
     parameters = _fix_up_parameters(invalid_method_desc, dummy_root_desc,
                                     no_payload_http_method)
-    self.assertFalse(parameters.has_key('body'))
+    self.assertFalse('body' in parameters)
 
     parameters = _fix_up_parameters(valid_method_desc, dummy_root_desc,
                                     no_payload_http_method)
-    self.assertFalse(parameters.has_key('body'))
+    self.assertFalse('body' in parameters)
 
     parameters = _fix_up_parameters(invalid_method_desc, dummy_root_desc,
                                     with_payload_http_method)
-    self.assertFalse(parameters.has_key('body'))
+    self.assertFalse('body' in parameters)
 
     parameters = _fix_up_parameters(valid_method_desc, dummy_root_desc,
                                     with_payload_http_method)
@@ -251,7 +251,7 @@
     http_method = 'GET'
     method_id = 'bigquery.query'
     accept = []
-    max_size = 0L
+    max_size = 0
     media_path_url = None
     self.assertEqual(result, (path_url, http_method, method_id, accept,
                               max_size, media_path_url))
@@ -263,7 +263,7 @@
     http_method = 'POST'
     method_id = 'zoo.animals.insert'
     accept = ['image/png']
-    max_size = 1024L
+    max_size = 1024
     media_path_url = 'https://www.googleapis.com/upload/zoo/v1/animals'
     self.assertEqual(result, (path_url, http_method, method_id, accept,
                               max_size, media_path_url))
