diff --git a/Code/MonoMultiViewClassifiers/ExecClassif.py b/Code/MonoMultiViewClassifiers/ExecClassif.py
index 4dd5ee2792f67128706cc1b062ddcb0c85dc72e7..d1be6b7a2fc9543355090b4bb38fb355747ff85e 100644
--- a/Code/MonoMultiViewClassifiers/ExecClassif.py
+++ b/Code/MonoMultiViewClassifiers/ExecClassif.py
@@ -22,7 +22,7 @@ from . import MonoviewClassifiers
 from .Multiview.ExecMultiview import ExecMultiview, ExecMultiview_multicore
 from .Monoview.ExecClassifMonoView import ExecMonoview, ExecMonoview_multicore
 from .Multiview import GetMultiviewDb as DB
-from ResultAnalysis import resultAnalysis, analyzeLabels, analyzeIterResults, analyzeIterLabels, genNamesFromRes
+from .ResultAnalysis import resultAnalysis, analyzeLabels, analyzeIterResults, analyzeIterLabels, genNamesFromRes
 from .utils import execution, Dataset
 
 # Author-Info
@@ -87,7 +87,7 @@ def initMonoviewKWARGS(args, classifiersNames):
     for classifiersName in classifiersNames:
         classifierModule = getattr(MonoviewClassifiers, classifiersName)
         monoviewKWARGS[classifiersName + "KWARGSInit"] = classifierModule.getKWARGS(
-            [(key, value) for key, value in vars(args).iteritems() if key.startswith("CL_" + classifiersName)])
+            [(key, value) for key, value in vars(args).items() if key.startswith("CL_" + classifiersName)])
     return monoviewKWARGS
 
 
@@ -295,7 +295,7 @@ def execClassif(arguments):
 
     views, viewsIndices, allViews = execution.initViews(DATASET, args)
     if not views:
-        raise ValueError, "Empty views list, modify selected views to match dataset " + args.views
+        raise ValueError("Empty views list, modify selected views to match dataset " + args.views)
 
     NB_VIEW = len(views)
     NB_CLASS = DATASET.get("Metadata").attrs["nbClass"]
diff --git a/Code/MonoMultiViewClassifiers/Metrics/__init__.py b/Code/MonoMultiViewClassifiers/Metrics/__init__.py
index 2e9bab0809974050ec19d6f1ddccd7691c45ad02..c5f17c0f8e71715c99885b3355766abc9821e7b0 100644
--- a/Code/MonoMultiViewClassifiers/Metrics/__init__.py
+++ b/Code/MonoMultiViewClassifiers/Metrics/__init__.py
@@ -1,8 +1,10 @@
 import os
+modules = []
 for module in os.listdir(os.path.dirname(os.path.realpath(__file__))):
     if module == '__init__.py' or module[-3:] != '.py':
         continue
-    __import__(module[:-3], locals(), globals())
+    __import__(module[:-3], locals(), globals(), [], 1)
+    pass
 del module
 del os
 
diff --git a/Code/MonoMultiViewClassifiers/Monoview/ExecClassifMonoView.py b/Code/MonoMultiViewClassifiers/Monoview/ExecClassifMonoView.py
index e8d0b30809fa4fb04537f9c69ac38701e697b817..661b44cdf5c8679c80b3bb83287c93cf0f87e7de 100644
--- a/Code/MonoMultiViewClassifiers/Monoview/ExecClassifMonoView.py
+++ b/Code/MonoMultiViewClassifiers/Monoview/ExecClassifMonoView.py
@@ -16,13 +16,13 @@ import h5py
 
 # Import own modules
 from .. import MonoviewClassifiers
-from analyzeResult import execute
+from .analyzeResult import execute
 from ..utils.Dataset import getValue, extractSubset
 
 # Author-Info
 __author__ = "Nikolas Huelsmann, Baptiste BAUVIN"
 __status__ = "Prototype"  # Production, Development, Prototype
-__date__ = 2016 - 03 - 25
+# __date__ = 2016 - 03 - 25
 
 
 def ExecMonoview_multicore(directory, name, labelsNames, classificationIndices, KFolds, datasetFileIndex, databaseType,
@@ -114,7 +114,7 @@ def ExecMonoview(directory, X, Y, name, labelsNames, classificationIndices, KFol
                                                             clKWARGS, labelsNames, X.shape,
                                                             y_train, y_train_pred, y_test, y_test_pred, t_end,
                                                             randomState, cl_res, outputFileName)
-    cl_desc = [value for key, value in sorted(clKWARGS.iteritems())]
+    cl_desc = [value for key, value in sorted(clKWARGS.items())]
     logging.debug("Done:\t Getting Results")
     logging.info(stringAnalysis)
     # labelsString = "-".join(labelsNames)
diff --git a/Code/MonoMultiViewClassifiers/Monoview/MonoviewUtils.py b/Code/MonoMultiViewClassifiers/Monoview/MonoviewUtils.py
index 7eed810f6c3d7ca0b0dc5960110c9a42a097192f..53e33323e2132619b0b2764b6736f0f0acda5f14 100644
--- a/Code/MonoMultiViewClassifiers/Monoview/MonoviewUtils.py
+++ b/Code/MonoMultiViewClassifiers/Monoview/MonoviewUtils.py
@@ -17,7 +17,7 @@ import numpy as np
 # Author-Info
 __author__ = "Nikolas Huelsmann, Baptiste Bauvin"
 __status__ = "Prototype"  # Production, Development, Prototype
-__date__ = 2016 - 03 - 25
+# __date__ = 2016 - 03 - 25
 
 
 def isUseful(labelSupports, index, CLASS_LABELS, labelDict):
diff --git a/Code/MonoMultiViewClassifiers/Monoview/__init__.py b/Code/MonoMultiViewClassifiers/Monoview/__init__.py
index f0fc97adc37a2a9d1a2455e081a3e73f772c8c65..8bbd0830cf0726bd3df3fd0fa4f120876627e912 100644
--- a/Code/MonoMultiViewClassifiers/Monoview/__init__.py
+++ b/Code/MonoMultiViewClassifiers/Monoview/__init__.py
@@ -1 +1 @@
-from . import ExecClassifMonoView, MonoviewUtils
+from . import ExecClassifMonoView, MonoviewUtils, analyzeResult
diff --git a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/__init__.py b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/__init__.py
index bc6cdc28e596c60b098ef493cbf199206e9a0673..03d92693e7f06109d9830c1855ee2b66ae807d9a 100644
--- a/Code/MonoMultiViewClassifiers/MonoviewClassifiers/__init__.py
+++ b/Code/MonoMultiViewClassifiers/MonoviewClassifiers/__init__.py
@@ -2,7 +2,7 @@ import os
 for module in os.listdir(os.path.dirname(os.path.realpath(__file__))):
     if module == '__init__.py' or module[-3:] != '.py':
         continue
-    __import__(module[:-3], locals(), globals())
+    __import__(module[:-3], locals(), globals(), [],1)
 del module
 del os
 
diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py
index 30da0f52f074690b68e86f0c2070feef345140e8..f6445eacd83d0f845cc8cae2e922b642b2b13b98 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/FusionModule.py
@@ -158,7 +158,7 @@ class FusionClass:
         fusionMethodClass = getattr(fusionMethodModule, fusionMethod)
         nbCores = NB_CORES
         classifierKWARGS = dict(
-            (key, value) for key, value in kwargs.iteritems() if key not in ['fusionType', 'fusionMethod'])
+            (key, value) for key, value in kwargs.items() if key not in ['fusionType', 'fusionMethod'])
         self.classifier = fusionMethodClass(randomState, NB_CORES=nbCores, **classifierKWARGS)
 
     def setParams(self, paramsSet):
diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/EarlyFusionPackage/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/EarlyFusionPackage/__init__.py
index 406f941a59b9076de41d8ad57cb259426dc3e715..3636ca90ab36db2f57b006402a3c6767d9395117 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/EarlyFusionPackage/__init__.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/EarlyFusionPackage/__init__.py
@@ -3,6 +3,6 @@ import os
 for module in os.listdir(os.path.dirname(os.path.realpath(__file__))):
     if module == '__init__.py' or module[-3:] != '.py':
         continue
-    __import__(module[:-3], locals(), globals())
+    __import__(module[:-3], locals(), globals(), [], 1)
 del module
 del os
diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/MajorityVoting.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/MajorityVoting.py
index 966b0ca3f9c2ddcb976f6ef32e430412337beebd..6b0b06926b8305f95734cb1e72e513442475b026 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/MajorityVoting.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/MajorityVoting.py
@@ -86,7 +86,7 @@ class MajorityVoting(LateFusionClassifier):
             try:
                 assert nbMaximum != nbView
             except:
-                print "Majority voting can't decide, each classifier has voted for a different class"
+                print("Majority voting can't decide, each classifier has voted for a different class")
                 raise
         predictedLabels = np.argmax(votes, axis=1)
         # Can be upgraded by restarting a new classification process if
diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/__init__.py
index 406f941a59b9076de41d8ad57cb259426dc3e715..3636ca90ab36db2f57b006402a3c6767d9395117 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/__init__.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/Methods/LateFusionPackage/__init__.py
@@ -3,6 +3,6 @@ import os
 for module in os.listdir(os.path.dirname(os.path.realpath(__file__))):
     if module == '__init__.py' or module[-3:] != '.py':
         continue
-    __import__(module[:-3], locals(), globals())
+    __import__(module[:-3], locals(), globals(), [], 1)
 del module
 del os
diff --git a/Code/MonoMultiViewClassifiers/Multiview/Fusion/analyzeResults.py b/Code/MonoMultiViewClassifiers/Multiview/Fusion/analyzeResults.py
index 05526fdb7d31c1383397e87fa548d33e98b98178..87d7d3a07388f1cad5b6e2db469cdf8bec2aa5aa 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/Fusion/analyzeResults.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/Fusion/analyzeResults.py
@@ -4,7 +4,7 @@ import matplotlib
 
 # matplotlib.use('Agg')
 import operator
-import Methods.LateFusion
+from .Methods import LateFusion
 from ... import Metrics
 
 # Author-Info
@@ -88,7 +88,7 @@ def execute(classifier, trainLabels,
                      " folds\n\nClassification configuration : \n\t-Algorithm used : " + fusionType + " " + fusionConfiguration
 
     if fusionType == "LateFusion":
-        stringAnalysis += Methods.LateFusion.getScores(classifier)
+        stringAnalysis += LateFusion.getScores(classifier)
     metricsScores = getMetricsScores(metrics, trainLabels, testLabels,
                                      DATASET, validationIndices, learningIndices)
     stringAnalysis += printMetricScore(metricsScores, metrics)
diff --git a/Code/MonoMultiViewClassifiers/Multiview/GetMultiviewDb.py b/Code/MonoMultiViewClassifiers/Multiview/GetMultiviewDb.py
index 18fa2efda9bcac8310653acb6dfa3ec274dc9938..28139df754f29c2ccc1fd6f728c2e7c3feb455a0 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/GetMultiviewDb.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/GetMultiviewDb.py
@@ -36,13 +36,13 @@ def getPlausibleDBhdf5(features, pathF, name, NB_CLASS, LABELS_NAME, nbView=3,
             if exc.errno != errno.EEXIST:
                 raise
     datasetFile = h5py.File(pathF + "/Plausible.hdf5", "w")
-    CLASS_LABELS = np.array([0 for i in range(datasetLength / 2)] + [1 for i in range(datasetLength / 2)])
+    CLASS_LABELS = np.array([0 for i in range(int(datasetLength / 2))] + [1 for i in range(int(datasetLength / 2))])
     for viewIndex in range(nbView):
-        viewData = np.array([np.zeros(nbFeatures) for i in range(datasetLength / 2)] + [np.ones(nbFeatures)
+        viewData = np.array([np.zeros(nbFeatures) for i in range(int(datasetLength / 2))] + [np.ones(nbFeatures)
                                                                                         for i in
-                                                                                        range(datasetLength / 2)])
-        fakeTrueIndices = randomState.randint(0, datasetLength / 2 - 1, datasetLength / 5)
-        fakeFalseIndices = randomState.randint(datasetLength / 2, datasetLength - 1, datasetLength / 5)
+                                                                                        range(int(datasetLength / 2))])
+        fakeTrueIndices = randomState.randint(0, int(datasetLength / 2) - 1, int(datasetLength / 5))
+        fakeFalseIndices = randomState.randint(int(datasetLength / 2), datasetLength - 1, int(datasetLength / 5))
 
         viewData[fakeTrueIndices] = np.ones((len(fakeTrueIndices), nbFeatures))
         viewData[fakeFalseIndices] = np.zeros((len(fakeFalseIndices), nbFeatures))
diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py
index 13f8ef38e9112abb6b4dbfca63a2eb58354c47bd..874f3ce549dba3ffd5054779f8a9feac93b34190 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/DecisionTree.py
@@ -2,7 +2,7 @@ import sklearn
 from sklearn.base import BaseEstimator, ClassifierMixin
 import numpy as np
 # from ModifiedMulticlass import OneVsRestClassifier
-from SubSampling import subSample
+from .SubSampling import subSample
 import logging
 
 # Add weights
diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/__init__.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/__init__.py
index 67fe9de36bef451e807afd5bebf524100535612a..8db5fdbaef4faa4a8cb43a126042d1abb03bbc24 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/__init__.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/Classifiers/__init__.py
@@ -8,6 +8,6 @@ import os
 for module in os.listdir(os.path.dirname(os.path.realpath(__file__))):
     if module == '__init__.py' or module[-3:] != '.py':
         continue
-    __import__(module[:-3], locals(), globals())
+    __import__(module[:-3], locals(), globals(), [], 1)
 del module
 del os
diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py
index 35836ea88e1b7d8acd406d1015e72f15a92e366a..d4cf238de2272a225cf5fc1b651aeeff31f9a370 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/MumboModule.py
@@ -7,7 +7,7 @@ import pkgutil
 import logging
 from sklearn.metrics import accuracy_score
 
-import Classifiers
+from . import Classifiers
 from ...utils.Dataset import getV
 
 # Author-Info
diff --git a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py
index dc5c70168e7ed6a28f7337016e582b7b37da2c7b..b38eead51807bf71bdd4c627effb3fd27c0f9b75 100644
--- a/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py
+++ b/Code/MonoMultiViewClassifiers/Multiview/Mumbo/analyzeResults.py
@@ -6,7 +6,7 @@ from datetime import timedelta as hms
 # import logging
 
 # import Mumbo
-import Classifiers
+from . import Classifiers
 from ... import Metrics
 from ...utils.Dataset import getV, getShape
 
diff --git a/Code/MonoMultiViewClassifiers/utils/Dataset.py b/Code/MonoMultiViewClassifiers/utils/Dataset.py
index 1ce96122099018db9edb7c6669dbbc45887c0ba4..a2a1bd164089e3288cb2ed952e13d9475d44b4e7 100644
--- a/Code/MonoMultiViewClassifiers/utils/Dataset.py
+++ b/Code/MonoMultiViewClassifiers/utils/Dataset.py
@@ -92,7 +92,7 @@ def confirm(resp=True, timeout=15):
     if not ans:
         return resp
     if ans not in ['y', 'Y', 'n', 'N']:
-        print 'please enter y or n.'
+        print('please enter y or n.')
     if ans == 'y' or ans == 'Y':
         return True
     if ans == 'n' or ans == 'N':
@@ -100,7 +100,7 @@ def confirm(resp=True, timeout=15):
 
 
 def input_(timeout=15):
-    print "You have " + str(timeout) + " seconds to stop the script by typing n"
+    print("You have " + str(timeout) + " seconds to stop the script by typing n")
     i, o, e = select.select([sys.stdin], [], [], timeout)
     if i:
         return sys.stdin.readline().strip()
diff --git a/Code/MonoMultiViewClassifiers/utils/Interpret.py b/Code/MonoMultiViewClassifiers/utils/Interpret.py
index 6f1882a5fa962e4bb3088570cbc9c5c2489e08e9..00562135e6cd34d359f1bce174a9072681365d66 100644
--- a/Code/MonoMultiViewClassifiers/utils/Interpret.py
+++ b/Code/MonoMultiViewClassifiers/utils/Interpret.py
@@ -1,7 +1,7 @@
 import numpy as np
 import matplotlib.pyplot as plt
 from matplotlib.ticker import FuncFormatter
-import cPickle
+import pickle
 
 
 def percent(x, pos):
@@ -26,7 +26,7 @@ def getFeatureImportance(classifier, directory, interpretString=""):
                                    for featureIndex, featureImportance in enumerate(featureImportances)
                                    if featureImportance != 0)
     with open(directory+'-feature_importances.pickle', 'wb') as handle:
-        cPickle.dump(featuresImportancesDict, handle)
+        pickle.dump(featuresImportancesDict, handle)
     interpretString += "Feature importances : \n"
     for featureIndex, featureImportance in zip(featureIndicesSorted, featureImportancesSorted):
         if featureImportance>0:
diff --git a/Code/MonoMultiViewClassifiers/utils/__init__.py b/Code/MonoMultiViewClassifiers/utils/__init__.py
index 842d824c6b28acf620ca3b31f973f2a924bd9415..5baa4d9cca647d122ac24808c64040829eb58200 100644
--- a/Code/MonoMultiViewClassifiers/utils/__init__.py
+++ b/Code/MonoMultiViewClassifiers/utils/__init__.py
@@ -1 +1 @@
-from . import Dataset, execution, HyperParameterSearch, Transformations
+from . import Dataset, execution, HyperParameterSearch, Transformations, Interpret
diff --git a/Code/MonoMultiViewClassifiers/utils/execution.py b/Code/MonoMultiViewClassifiers/utils/execution.py
index d4ebb75dd82f03b7f77f1de07e38b9232ff0e787..7552f068f7fcafc341ab2c669b9b9229064b67e6 100644
--- a/Code/MonoMultiViewClassifiers/utils/execution.py
+++ b/Code/MonoMultiViewClassifiers/utils/execution.py
@@ -1,6 +1,6 @@
 import argparse
 import numpy as np
-import cPickle
+import pickle
 import time
 import os
 import errno
@@ -192,9 +192,9 @@ def initRandomState(randomStateArg, directory):
         except ValueError:
             fileName = randomStateArg
             with open(fileName, 'rb') as handle:
-                randomState = cPickle.load(handle)
+                randomState = pickle.load(handle)
     with open(directory + "randomState.pickle", "wb") as handle:
-        cPickle.dump(randomState, handle)
+        pickle.dump(randomState, handle)
     return randomState
 
 
diff --git a/Code/Versions.py b/Code/Versions.py
index bd0becc0f5148821458ab5a428df7d3b568b74e1..0da83a60a688660cf17a2ac2974e4b8abf4a790b 100644
--- a/Code/Versions.py
+++ b/Code/Versions.py
@@ -12,7 +12,7 @@
 # Author-Info
 __author__ = "Baptiste Bauvin"
 __status__ = "Prototype"  # Production, Development, Prototype
-__date__ = 2016 - 03 - 25
+# __date__ = 2016 - 03 - 25
 
 
 def testVersions():
@@ -96,14 +96,20 @@ def testVersions():
         isUpToDate = False
         toInstall.append("h5py")
 
-    # try:
-    #     import graphviz  #
-    # except:
-    #     isUpToDate = False
-    #     toInstall.append("graphviz")
+    try:
+        import graphviz  #
+    except:
+        isUpToDate = False
+        toInstall.append("graphviz")
+
+    try:
+        import pickle  #
+    except:
+        isUpToDate = False
+        toInstall.append("pickle")
 
     if not isUpToDate:
-        print "You can't run at the moment, please install the following modules : \n"+ "\n".join(toInstall)
+        print("You can't run at the moment, please install the following modules : \n"+ "\n".join(toInstall))
         quit()
 
 if __name__== "__main__":