Index: src/sas/qtgui/Plotting/Arrow3D.py
===================================================================
--- src/sas/qtgui/Plotting/Arrow3D.py	(revision fef38e8f19a097daafbdbdd6edb786c11fb2b995)
+++ src/sas/qtgui/Plotting/Arrow3D.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -59,5 +59,5 @@
             return
         xs3d, ys3d, zs3d = self._verts3d
-        for i in xrange(len(xs3d)):
+        for i in range(len(xs3d)):
             xs, ys, _ = proj3d.proj_transform(xs3d[i], ys3d[i], zs3d[i], renderer.M)
             self.set_positions((xs[0], ys[0]), (xs[1], ys[1]))
Index: src/sas/qtgui/Plotting/Binder.py
===================================================================
--- src/sas/qtgui/Plotting/Binder.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/Plotting/Binder.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -24,5 +24,5 @@
         return self.artist is not other.artist
 
-    def __nonzero__(self):
+    def __bool__(self):
         return self.artist is not None
 
@@ -61,5 +61,5 @@
             ]
         except:
-            print "bypassing scroll_event: wrong matplotlib version"
+            print("bypassing scroll_event: wrong matplotlib version")
             self._connections = [
                 canvas.mpl_connect('motion_notify_event', self._onMotion),
@@ -121,5 +121,5 @@
             for cid in self._connections: self.canvas.mpl_disconnect(cid)
         except:
-            logging.error("Error disconnection canvas: %s" % sys.exc_value)
+            logging.error("Error disconnection canvas: %s" % sys.exc_info()[1])
         self._connections = []
 
@@ -185,6 +185,6 @@
         # Check that the trigger is valid
         if trigger not in self._actions:
-            raise ValueError, "%s invalid --- valid triggers are %s"\
-                 % (trigger, ", ".join(self.events))
+            raise ValueError("%s invalid --- valid triggers are %s"\
+                 % (trigger, ", ".join(self.events)))
 
         # Register the trigger callback
@@ -201,5 +201,5 @@
         """
         if action not in self.events:
-            raise ValueError, "Trigger expects " + ", ".join(self.events)
+            raise ValueError("Trigger expects " + ", ".join(self.events))
 
         # Tag the event with modifiers
Index: src/sas/qtgui/Plotting/ColorMap.py
===================================================================
--- src/sas/qtgui/Plotting/ColorMap.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/Plotting/ColorMap.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -13,5 +13,5 @@
 from sas.qtgui.Plotting.PlotterData import Data2D
 from sas.qtgui.Utilities.GuiUtils import formatNumber
-from rangeSlider import RangeSlider
+from .rangeSlider import RangeSlider
 
 DEFAULT_MAP = 'jet'
Index: src/sas/qtgui/Plotting/ConvertUnits.py
===================================================================
--- src/sas/qtgui/Plotting/ConvertUnits.py	(revision 749b715f280e81297ccee885592a53f964909d62)
+++ src/sas/qtgui/Plotting/ConvertUnits.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -42,10 +42,10 @@
                             unit = toks[0] + "^{" + str(powerer) + "}"
                 else:
-                    raise ValueError, "missing } in unit expression"
+                    raise ValueError("missing } in unit expression")
         else:  # no powerer
             if  power != 1:
                 unit = "(" + unit + ")" + "^{" + str(power) + "}"
     else:
-        raise ValueError, "empty unit ,enter a powerer different from zero"
+        raise ValueError("empty unit ,enter a powerer different from zero")
     return unit
 
@@ -68,13 +68,13 @@
     unit8 = "m/s^{4}"  #         x^2               (m/s^{4})^{2}
 
-    print "this unit1 %s ,its powerer %s , and value %s" % (unit1, 1, convert_unit(1, unit1))
-    print "this unit2 %s ,its powerer %s , and value %s" % (unit2, 1, convert_unit(1, unit2))
-    print "this unit3 %s ,its powerer %s , and value %s" % (unit3, 2, convert_unit(2, unit3))
-    print "this unit4 %s ,its powerer %s , and value %s" % (unit4, -1, convert_unit(-1, unit4))
-    print "this unit5 %s ,its powerer %s , and value %s" % (unit5, 2, convert_unit(2, unit5))
-    print "this unit6 %s ,its powerer %s , and value %s" % (unit6, 2, convert_unit(2, unit6))
-    print "this unit7 %s ,its powerer %s , and value %s" % (unit7, -1, convert_unit(-1, unit7))
-    print "this unit8 %s ,its powerer %s , and value %s" % (unit8, 2, convert_unit(2, unit8))
-    print "this unit9 %s ,its powerer %s , and value %s" % (unit9, 2, convert_unit(2, unit9))
+    print("this unit1 %s ,its powerer %s , and value %s" % (unit1, 1, convert_unit(1, unit1)))
+    print("this unit2 %s ,its powerer %s , and value %s" % (unit2, 1, convert_unit(1, unit2)))
+    print("this unit3 %s ,its powerer %s , and value %s" % (unit3, 2, convert_unit(2, unit3)))
+    print("this unit4 %s ,its powerer %s , and value %s" % (unit4, -1, convert_unit(-1, unit4)))
+    print("this unit5 %s ,its powerer %s , and value %s" % (unit5, 2, convert_unit(2, unit5)))
+    print("this unit6 %s ,its powerer %s , and value %s" % (unit6, 2, convert_unit(2, unit6)))
+    print("this unit7 %s ,its powerer %s , and value %s" % (unit7, -1, convert_unit(-1, unit7)))
+    print("this unit8 %s ,its powerer %s , and value %s" % (unit8, 2, convert_unit(2, unit8)))
+    print("this unit9 %s ,its powerer %s , and value %s" % (unit9, 2, convert_unit(2, unit9)))
 
 
Index: src/sas/qtgui/Plotting/DataTransform.py
===================================================================
--- src/sas/qtgui/Plotting/DataTransform.py	(revision 749b715f280e81297ccee885592a53f964909d62)
+++ src/sas/qtgui/Plotting/DataTransform.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -24,5 +24,5 @@
     """
     if not x > 0:
-        raise ValueError, "Transformation only accepts positive values."
+        raise ValueError("Transformation only accepts positive values.")
     else:
         return x
@@ -50,5 +50,5 @@
     """
     if not x >= 0:
-        raise ValueError, "square root of a negative value "
+        raise ValueError("square root of a negative value ")
     else:
         return math.sqrt(x)
@@ -76,5 +76,5 @@
     """
     if not x >= 0:
-        raise ValueError, "double square root of a negative value "
+        raise ValueError("double square root of a negative value ")
     else:
         return math.sqrt(math.sqrt(x))
@@ -90,5 +90,5 @@
     """
     if not x > 0:
-        raise ValueError, "Log(x)of a negative value "
+        raise ValueError("Log(x)of a negative value ")
     else:
         return math.log(x)
@@ -100,5 +100,5 @@
         return 1 / x
     else:
-        raise ValueError, "cannot divide by zero"
+        raise ValueError("cannot divide by zero")
 
 
@@ -109,5 +109,5 @@
         return 1 / math.sqrt(y)
     else:
-        raise ValueError, "transform.toOneOverSqrtX: cannot be computed"
+        raise ValueError("transform.toOneOverSqrtX: cannot be computed")
 
 
@@ -118,5 +118,5 @@
         return math.log(y * (x ** 2))
     else:
-        raise ValueError, "transform.toLogYX2: cannot be computed"
+        raise ValueError("transform.toLogYX2: cannot be computed")
 
 
@@ -127,5 +127,5 @@
         return math.log(math.pow(x, 4) * y)
     else:
-        raise ValueError, "transform.toLogYX4: input error"
+        raise ValueError("transform.toLogYX4: input error")
 
 
@@ -149,5 +149,5 @@
     """
     if not (x * y) > 0:
-        raise ValueError, "Log(X*Y)of a negative value "
+        raise ValueError("Log(X*Y)of a negative value ")
     else:
         return math.log(x * y)
@@ -211,5 +211,5 @@
     else:
         msg = "transform.errFromX2: can't compute error of negative x"
-        raise ValueError, msg
+        raise ValueError(msg)
 
 
@@ -245,5 +245,5 @@
     else:
         msg = "transform.errFromX4: can't compute error of negative x"
-        raise ValueError, msg
+        raise ValueError(msg)
 
 
@@ -264,9 +264,9 @@
         msg = "Transformation does not accept"
         msg += " point that are consistent with zero."
-        raise ValueError, msg
+        raise ValueError(msg)
     if x != 0:
         dx = dx / (x * math.log(10))
     else:
-        raise ValueError, "errToLogX: divide by zero"
+        raise ValueError("errToLogX: divide by zero")
     return dx
 
@@ -287,5 +287,5 @@
         dx = dx / x
     else:
-        raise ValueError, "errToLogX: divide by zero"
+        raise ValueError("errToLogX: divide by zero")
     return dx
 
@@ -312,5 +312,5 @@
         msg = "Transformation does not accept point "
         msg += " that are consistent with zero."
-        raise ValueError, msg
+        raise ValueError(msg)
     if x != 0 and y != 0:
         if dx == None:
@@ -320,5 +320,5 @@
         err = (dx / x) ** 2 + (dy / y) ** 2
     else:
-        raise ValueError, "cannot compute this error"
+        raise ValueError("cannot compute this error")
 
     return math.sqrt(math.fabs(err))
@@ -335,5 +335,5 @@
         msg = "Transformation does not accept point"
         msg += " that are consistent with zero."
-        raise ValueError, msg
+        raise ValueError(msg)
     if x > 0 and y > 0:
         if dx == None:
@@ -343,5 +343,5 @@
         err = (2.0 * dx / x) ** 2 + (dy / y) ** 2
     else:
-        raise ValueError, "cannot compute this error"
+        raise ValueError("cannot compute this error")
     return math.sqrt(math.fabs(err))
 
@@ -357,5 +357,5 @@
         err = dx / x ** 2
     else:
-        raise ValueError, "Cannot compute this error"
+        raise ValueError("Cannot compute this error")
     return math.fabs(err)
 
@@ -371,5 +371,5 @@
         err = -1 / 2 * math.pow(x, -3.0 / 2.0) * dx
     else:
-        raise ValueError, "Cannot compute this error"
+        raise ValueError("Cannot compute this error")
     return math.fabs(err)
 
@@ -387,5 +387,5 @@
         msg = "Transformation does not accept point "
         msg += " that are consistent with zero."
-        raise ValueError, msg
+        raise ValueError(msg)
     if dx == None:
         dx = 0
Index: src/sas/qtgui/Plotting/Fittings.py
===================================================================
--- src/sas/qtgui/Plotting/Fittings.py	(revision adc49fc00f134eaa53065d970741288f321fcfec)
+++ src/sas/qtgui/Plotting/Fittings.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -97,5 +97,5 @@
     # Testing implementation
     # Fit a Line model
-    from LineModel import LineModel
+    from .LineModel import LineModel
     line = LineModel()
     cstA = Parameter(line, 'A', event.cstA)
@@ -104,5 +104,5 @@
     chisqr, out, cov = sasfit(line, [cstA, cstB], event.x, y, 0)
     # print "Output parameters:", out
-    print "The right answer is [70.0, 1.0]"
-    print chisqr, out, cov
+    print("The right answer is [70.0, 1.0]")
+    print(chisqr, out, cov)
 
Index: src/sas/qtgui/Plotting/LineModel.py
===================================================================
--- src/sas/qtgui/Plotting/LineModel.py	(revision 749b715f280e81297ccee885592a53f964909d62)
+++ src/sas/qtgui/Plotting/LineModel.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -81,5 +81,5 @@
         elif x.__class__.__name__ == 'tuple':
             msg = "Tuples are not allowed as input to BaseComponent models"
-            raise ValueError, msg
+            raise ValueError(msg)
         else:
             return self._line(x)
@@ -103,5 +103,5 @@
         elif x.__class__.__name__ == 'tuple':
             msg = "Tuples are not allowed as input to BaseComponent models"
-            raise ValueError, msg
+            raise ValueError(msg)
         else:
             return self._line(x)
Index: src/sas/qtgui/Plotting/LinearFit.py
===================================================================
--- src/sas/qtgui/Plotting/LinearFit.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/Plotting/LinearFit.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -79,5 +79,5 @@
         Overwrite default fit range label to correspond to actual unit
         """
-        assert(isinstance(label, basestring))
+        assert(isinstance(label, str))
         self.lblRange.setText(label)
 
@@ -195,6 +195,6 @@
                          for i in range(len(x)) if x[i] >= xmin_check]
             else:
-                tempy = map(numpy.log10, y)
-                tempdy = map(lambda t1,t2:DataTransform.errToLogX(t1,0,t2,0),y,dy)
+                tempy = list(map(numpy.log10, y))
+                tempdy = list(map(lambda t1,t2:DataTransform.errToLogX(t1,0,t2,0),y,dy))
         else:
             tempy = y
Index: src/sas/qtgui/Plotting/PlotHelper.py
===================================================================
--- src/sas/qtgui/Plotting/PlotHelper.py	(revision 83eb5208b8acb86b064162274de583670f72da47)
+++ src/sas/qtgui/Plotting/PlotHelper.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -35,5 +35,5 @@
     Returns a list of IDs for all currently active plots
     """
-    return this._plots.keys()
+    return list(this._plots.keys())
 
 def plotById(plot_id):
@@ -48,5 +48,5 @@
     """
     plot_id = None
-    for key in this._plots.keys():
+    for key in list(this._plots.keys()):
         if this._plots[key] == plot:
             plot_id = key
Index: src/sas/qtgui/Plotting/PlotProperties.py
===================================================================
--- src/sas/qtgui/Plotting/PlotProperties.py	(revision cd2cc7458970e179039a783e9409f48c4c1fca0d)
+++ src/sas/qtgui/Plotting/PlotProperties.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -26,5 +26,5 @@
 
         # Fill out the color combobox
-        self.cbColor.addItems(COLORS.keys()[:-1])
+        self.cbColor.addItems(list(COLORS.keys())[:-1])
         # data1d.custom_color can now be a simple integer,
         # specifying COLORS dict index or a string containing
@@ -34,9 +34,9 @@
         else:
             # Need the Custom entry here. "Custom" is always last.
-            self.cbColor.addItems([COLORS.keys()[-1]])
-            self.cbColor.setCurrentIndex(COLORS.keys().index("Custom"))
+            self.cbColor.addItems([list(COLORS.keys())[-1]])
+            self.cbColor.setCurrentIndex(list(COLORS.keys()).index("Custom"))
 
         # Fill out the marker combobox
-        self.cbShape.addItems(SHAPES.keys())
+        self.cbShape.addItems(list(SHAPES.keys()))
         try:
             self.cbShape.setCurrentIndex(self._marker)
@@ -83,5 +83,5 @@
             # Add Custom to the color combo box
             self.cbColor.addItems(["Custom"])
-            self.cbColor.setCurrentIndex(COLORS.keys().index("Custom"))
+            self.cbColor.setCurrentIndex(list(COLORS.keys()).index("Custom"))
             # unblock currentIndexChanged
             self.cbColor.blockSignals(False)
Index: src/sas/qtgui/Plotting/PlotUtilities.py
===================================================================
--- src/sas/qtgui/Plotting/PlotUtilities.py	(revision 83eb5208b8acb86b064162274de583670f72da47)
+++ src/sas/qtgui/Plotting/PlotUtilities.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -273,5 +273,5 @@
         # Check if it's within the range
         if 0 <= color <=6:
-            color = COLORS.values()[color]
+            color = list(COLORS.values())[color]
     # Check if it's an RGB string
     elif isinstance(color, str):
Index: src/sas/qtgui/Plotting/Plottables.py
===================================================================
--- src/sas/qtgui/Plotting/Plottables.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/Plotting/Plottables.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -239,5 +239,5 @@
         selected_color = None
         selected_plottable = None
-        for p in self.plottables.keys():
+        for p in list(self.plottables.keys()):
             if plottable.id == p.id:
                 selected_plottable = p
@@ -384,5 +384,5 @@
 
         """
-        raise NotImplemented, "Not a valid transform"
+        raise NotImplemented("Not a valid transform")
 
     # Related issues
@@ -512,5 +512,5 @@
                 label_dict[collection[0]] = basename
             else:
-                for i in xrange(len(collection)):
+                for i in range(len(collection)):
                     label_dict[collection[i]] = "%s %d" % (basename, i)
         return label_dict
@@ -684,15 +684,15 @@
                 msg = "Plottable.View: Given x and dx are not"
                 msg += " of the same length"
-                raise ValueError, msg
+                raise ValueError(msg)
             # Check length of y array
             if not len(y) == len(x):
                 msg = "Plottable.View: Given y "
                 msg += "and x are not of the same length"
-                raise ValueError, msg
+                raise ValueError(msg)
 
             if not dy is None and not len(dy) == 0 and not len(y) == len(dy):
                 msg = "Plottable.View: Given y and dy are not of the same "
                 msg += "length: len(y)=%s, len(dy)=%s" % (len(y), len(dy))
-                raise ValueError, msg
+                raise ValueError(msg)
             self.x = []
             self.y = []
@@ -729,13 +729,13 @@
                 msg = "Plottable.View: transformed x "
                 msg += "and y are not of the same length"
-                raise ValueError, msg
+                raise ValueError(msg)
             if has_err_x and not (len(self.x) == len(self.dx)):
                 msg = "Plottable.View: transformed x and dx"
                 msg += " are not of the same length"
-                raise ValueError, msg
+                raise ValueError(msg)
             if has_err_y and not (len(self.y) == len(self.dy)):
                 msg = "Plottable.View: transformed y"
                 msg += " and dy are not of the same length"
-                raise ValueError, msg
+                raise ValueError(msg)
             # Check that negative values are not plot on x and y axis for
             # log10 transformation
@@ -809,5 +809,5 @@
                 except:
                     logging.error("check_data_logX: skipping point x %g", self.x[i])
-                    logging.error(sys.exc_value)
+                    logging.error(sys.exc_info()[1])
             self.x = tempx
             self.y = tempy
@@ -839,5 +839,5 @@
                 except:
                     logging.error("check_data_logY: skipping point %g", self.y[i])
-                    logging.error(sys.exc_value)
+                    logging.error(sys.exc_info()[1])
 
             self.x = tempx
@@ -1101,5 +1101,5 @@
         Plottable.__init__(self)
         msg = "Theory1D is no longer supported, please use Data1D and change symbol.\n"
-        raise DeprecationWarning, msg
+        raise DeprecationWarning(msg)
 
 class PlottableFit1D(Plottable):
Index: src/sas/qtgui/Plotting/Plotter.py
===================================================================
--- src/sas/qtgui/Plotting/Plotter.py	(revision 749b715f280e81297ccee885592a53f964909d62)
+++ src/sas/qtgui/Plotting/Plotter.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -90,5 +90,5 @@
                 marker = PlotUtilities.SHAPES[marker]
             except KeyError:
-                marker = PlotUtilities.SHAPES.values()[marker]
+                marker = list(PlotUtilities.SHAPES.values())[marker]
 
         assert marker is not None
@@ -206,5 +206,5 @@
         Adds operations on all plotted sets of data to the context menu
         """
-        for id in self.plot_dict.keys():
+        for id in list(self.plot_dict.keys()):
             plot = self.plot_dict[id]
 
@@ -391,5 +391,5 @@
         Deletes the selected plot from the chart
         """
-        if id not in self.plot_dict.keys():
+        if id not in list(self.plot_dict.keys()):
             return
 
@@ -482,5 +482,5 @@
         """
         # Transform all the plots on the chart
-        for id in self.plot_dict.keys():
+        for id in list(self.plot_dict.keys()):
             current_plot = self.plot_dict[id]
             if current_plot.id == "fit":
Index: src/sas/qtgui/Plotting/SlicerModel.py
===================================================================
--- src/sas/qtgui/Plotting/SlicerModel.py	(revision 83eb5208b8acb86b064162274de583670f72da47)
+++ src/sas/qtgui/Plotting/SlicerModel.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -19,5 +19,5 @@
         self._model.removeRows( 0, self._model.rowCount() )
         # Crete/overwrite model items
-        for parameter in parameters.keys():
+        for parameter in list(parameters.keys()):
             item1 = QtGui.QStandardItem(parameter)
             item2 = QtGui.QStandardItem(GuiUtils.formatNumber(parameters[parameter]))
Index: src/sas/qtgui/Plotting/Slicers/AnnulusSlicer.py
===================================================================
--- src/sas/qtgui/Plotting/Slicers/AnnulusSlicer.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/Plotting/Slicers/AnnulusSlicer.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -4,5 +4,5 @@
 
 import sas.qtgui.Utilities.GuiUtils as GuiUtils
-from BaseInteractor import BaseInteractor
+from .BaseInteractor import BaseInteractor
 from sas.qtgui.Plotting.PlotterData import Data1D
 from sas.qtgui.Utilities.GuiUtils import formatNumber
Index: src/sas/qtgui/Plotting/Slicers/Arc.py
===================================================================
--- src/sas/qtgui/Plotting/Slicers/Arc.py	(revision 749b715f280e81297ccee885592a53f964909d62)
+++ src/sas/qtgui/Plotting/Slicers/Arc.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -4,5 +4,5 @@
 import math
 
-from BaseInteractor import BaseInteractor
+from .BaseInteractor import BaseInteractor
 
 class ArcInteractor(BaseInteractor):
Index: src/sas/qtgui/Plotting/Slicers/AzimutSlicer.py
===================================================================
--- src/sas/qtgui/Plotting/Slicers/AzimutSlicer.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/Plotting/Slicers/AzimutSlicer.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -5,5 +5,5 @@
 #
 import math
-from BaseInteractor import BaseInteractor
+from .BaseInteractor import BaseInteractor
 
 class SectorInteractor(BaseInteractor):
@@ -26,5 +26,5 @@
 
         # Inner circle
-        from Arc import ArcInteractor
+        from .Arc import ArcInteractor
         self.inner_circle = ArcInteractor(self, self.base.subplot,
                                           zorder=zorder,
Index: src/sas/qtgui/Plotting/Slicers/BoxSlicer.py
===================================================================
--- src/sas/qtgui/Plotting/Slicers/BoxSlicer.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/Plotting/Slicers/BoxSlicer.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -3,5 +3,5 @@
 from PyQt4 import QtCore
 
-from BaseInteractor import BaseInteractor
+from .BaseInteractor import BaseInteractor
 from sas.qtgui.Plotting.PlotterData import Data1D
 import sas.qtgui.Utilities.GuiUtils as GuiUtils
@@ -136,5 +136,5 @@
             if new_slab is None:
                 msg = "post data:cannot average , averager is empty"
-                raise ValueError, msg
+                raise ValueError(msg)
             self.averager = new_slab
         if self.direction == "X":
@@ -152,5 +152,5 @@
         else:
             msg = "post data:no Box Average direction was supplied"
-            raise ValueError, msg
+            raise ValueError(msg)
         # # Average data2D given Qx or Qy
         box = self.averager(x_min=x_min, x_max=x_max, y_min=y_min, y_max=y_max,
Index: src/sas/qtgui/Plotting/Slicers/BoxSum.py
===================================================================
--- src/sas/qtgui/Plotting/Slicers/BoxSum.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/Plotting/Slicers/BoxSum.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -8,5 +8,5 @@
 from sas.qtgui.Utilities.GuiUtils import formatNumber
 
-from BaseInteractor import BaseInteractor
+from .BaseInteractor import BaseInteractor
 from sas.sascalc.dataloader.manipulations import Boxavg
 from sas.sascalc.dataloader.manipulations import Boxsum
Index: src/sas/qtgui/Plotting/Slicers/SectorSlicer.py
===================================================================
--- src/sas/qtgui/Plotting/Slicers/SectorSlicer.py	(revision dc5ef150e8b37e01a3b7e253eb5b66d3b82de99c)
+++ src/sas/qtgui/Plotting/Slicers/SectorSlicer.py	(revision b3e8629bf18b74f4214d6552e620fcbc4e73a28c)
@@ -6,5 +6,5 @@
 from PyQt4 import QtCore
 
-from BaseInteractor import BaseInteractor
+from .BaseInteractor import BaseInteractor
 from sas.qtgui.Plotting.PlotterData import Data1D
 import sas.qtgui.Utilities.GuiUtils as GuiUtils
@@ -230,5 +230,5 @@
             msg = "Phi left and phi right are different"
             msg += " %f, %f" % (self.left_line.phi, self.right_line.phi)
-            raise ValueError, msg
+            raise ValueError(msg)
         params["Phi [deg]"] = self.main_line.theta * 180 / numpy.pi
         params["Delta_Phi [deg]"] = numpy.fabs(self.left_line.phi * 180 / numpy.pi)
