diff --git a/generateDS.py b/generateDS.py
index c32c6b9907d70c398f4aac7d4b0a3e732b294a2f..70755e7b37bb19af93fe95a1650583f9849e0bf9 100755
--- a/generateDS.py
+++ b/generateDS.py
@@ -6411,7 +6411,10 @@ def isNewState():
     state = reduce(
         operator.concat,
         (str(id(item)) for item in PostponedExtensions))
-    sum = hashlib.sha1(str(state)).hexdigest()
+    if sys.version_info.major == 2:
+        sum = hashlib.sha1(str(state)).hexdigest()
+    else:
+        sum = hashlib.sha1(str(state).encode()).hexdigest()
     if sum in LoopcheckOneperChecksums:
         return False
     LoopcheckOneperChecksums.add(sum)
diff --git a/process_includes.py b/process_includes.py
index 9b62eafb1dde1e63b3e628ec00a31df04ac2fbbc..ed91e2bf21e7bf0340ac01c81781a0180d39e848 100755
--- a/process_includes.py
+++ b/process_includes.py
@@ -18,7 +18,9 @@ import os
 if sys.version_info.major == 2:
     import urllib2
 else:
-    import urllib.request, urllib.error, urllib.parse
+    import urllib.request
+    import urllib.error
+    import urllib.parse
 import copy
 from optparse import OptionParser, Values
 import itertools
@@ -238,7 +240,11 @@ def collect_inserts_aux(child, params, inserts, options):
     save_base_url = params.base_url
     string_content = resolve_ref(child, params, options)
     if string_content is not None:
-        root = etree.fromstring(string_content, base_url=params.base_url)
+        if sys.version_info.major == 2:
+            root = etree.fromstring(string_content, base_url=params.base_url)
+        else:
+            root = etree.fromstring(
+                string_content.encode(), base_url=params.base_url)
         roots.append(root)
         for child1 in root:
             if not isinstance(child1, etree._Comment):
@@ -281,10 +287,10 @@ def get_root_file_paths_aux(child, params, rootPaths):
 def make_file(outFileName, options):
     outFile = None
     if (not options.force) and os.path.exists(outFileName):
-        if sys.version_info.major == 2:
-            reply = raw_input('File %s exists.  Overwrite? (y/n): ' % outFileName)
-        else:
-            reply = input('File %s exists.  Overwrite? (y/n): ' % outFileName)
+        if sys.version_info.major == 3:
+            raw_input = input
+        reply = raw_input(
+            'File %s exists.  Overwrite? (y/n): ' % outFileName)
         if reply == 'y':
             outFile = open(outFileName, 'w')
     else:
diff --git a/tests/test.py b/tests/test.py
index 64df9a0304d040289a003bf316f034ee85c07c68..0f14e59ad9a214e484e3556df471b32ae09357f4 100755
--- a/tests/test.py
+++ b/tests/test.py
@@ -1,5 +1,6 @@
 #!/usr/bin/env python
 
+from __future__ import print_function
 import sys
 import os
 import subprocess
@@ -19,7 +20,7 @@ class GenTest(unittest.TestCase):
         return stdout, stderr
 
 ##     def setUp(self):
-##         print 'running setUp'
+##         print('running setUp')
 ##         cmd = (
 ##             'python generateDS.py --no-dates --no-versions -f '
 ##             '-o tests/out2_sup.py -s tests/out2_sub.py '
@@ -784,7 +785,7 @@ Example:
 
 
 def usage():
-    print USAGE_TEXT
+    print(USAGE_TEXT)
     sys.exit(-1)