Run 2to3 over the Demo/ directory to shut up parse errors from 2to3 about lingering print statements.
diff --git a/Demo/pdist/security.py b/Demo/pdist/security.py
index b63081e..ffdbe2d 100755
--- a/Demo/pdist/security.py
+++ b/Demo/pdist/security.py
@@ -3,11 +3,11 @@
     def __init__(self):
         import os
         env = os.environ
-        if env.has_key('PYTHON_KEYFILE'):
+        if 'PYTHON_KEYFILE' in env:
             keyfile = env['PYTHON_KEYFILE']
         else:
             keyfile = '.python_keyfile'
-            if env.has_key('HOME'):
+            if 'HOME' in env:
                 keyfile = os.path.join(env['HOME'], keyfile)
             if not os.path.exists(keyfile):
                 import sys
@@ -19,7 +19,7 @@
         try:
             self._key = eval(open(keyfile).readline())
         except IOError:
-            raise IOError, "python keyfile %s: cannot open" % keyfile
+            raise IOError("python keyfile %s: cannot open" % keyfile)
 
     def _generate_challenge(self):
         import random
@@ -30,4 +30,4 @@
 
     def _encode_challenge(self, challenge):
         p, m = self._key
-        return pow(long(challenge), p, m)
+        return pow(int(challenge), p, m)