diff --git a/add_curve_extra_objects/__init__.py b/add_curve_extra_objects/__init__.py
index 5dffb0d410446f694655f25b8948438c623828c1..f3b24131f9e8ff38dff8f92a70f954e3b3f57e9d 100644
--- a/add_curve_extra_objects/__init__.py
+++ b/add_curve_extra_objects/__init__.py
@@ -31,10 +31,10 @@ bl_info = {
     "category": "Add Curve"}
 
 if "bpy" in locals():
-    import imp
-    imp.reload(add_curve_aceous_galore)
-    imp.reload(add_curve_spirals)
-    imp.reload(add_curve_torus_knots)
+    import importlib
+    importlib.reload(add_curve_aceous_galore)
+    importlib.reload(add_curve_spirals)
+    importlib.reload(add_curve_torus_knots)
 
 else:
     from . import add_curve_aceous_galore
diff --git a/add_curve_sapling/__init__.py b/add_curve_sapling/__init__.py
index 719675ed35b445b15f7e6f8f4265b76a57ebdc77..7e09fb28931e2f8807ddaf852bb67ecafdbe10d4 100644
--- a/add_curve_sapling/__init__.py
+++ b/add_curve_sapling/__init__.py
@@ -33,8 +33,8 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(utils)
+    import importlib
+    importlib.reload(utils)
 else:
     from add_curve_sapling import utils
 
diff --git a/add_mesh_BoltFactory/__init__.py b/add_mesh_BoltFactory/__init__.py
index 0f1c6919b903a8cce1c654d4ba9783f9c3b52e44..6dd32b86cd0e18a42279dd32fdc813f6e012c708 100644
--- a/add_mesh_BoltFactory/__init__.py
+++ b/add_mesh_BoltFactory/__init__.py
@@ -30,8 +30,8 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(Boltfactory)
+    import importlib
+    importlib.reload(Boltfactory)
 else:
     from add_mesh_BoltFactory import Boltfactory
 
diff --git a/add_mesh_extra_objects/__init__.py b/add_mesh_extra_objects/__init__.py
index be08604227030ab173c34b0f813e1aa1595f5806..41bebc7f12e12a5316a081270096499b9a6e4c4d 100644
--- a/add_mesh_extra_objects/__init__.py
+++ b/add_mesh_extra_objects/__init__.py
@@ -32,20 +32,20 @@ bl_info = {
 }
 
 if "bpy" in locals():
-    import imp
-    imp.reload(add_mesh_extra_objects)
-    imp.reload(add_mesh_twisted_torus)
-    imp.reload(add_mesh_gemstones)
-    imp.reload(add_mesh_gears)
-    imp.reload(add_mesh_3d_function_surface)
-    imp.reload(add_mesh_polysphere)
-    imp.reload(add_mesh_supertoroid)
-    imp.reload(add_mesh_pyramid)
-    imp.reload(add_mesh_torusknot)
-    imp.reload(add_mesh_honeycomb)
-    imp.reload(add_mesh_teapot)
-    imp.reload(add_mesh_pipe_joint)
-    imp.reload(add_mesh_solid)
+    import importlib
+    importlib.reload(add_mesh_extra_objects)
+    importlib.reload(add_mesh_twisted_torus)
+    importlib.reload(add_mesh_gemstones)
+    importlib.reload(add_mesh_gears)
+    importlib.reload(add_mesh_3d_function_surface)
+    importlib.reload(add_mesh_polysphere)
+    importlib.reload(add_mesh_supertoroid)
+    importlib.reload(add_mesh_pyramid)
+    importlib.reload(add_mesh_torusknot)
+    importlib.reload(add_mesh_honeycomb)
+    importlib.reload(add_mesh_teapot)
+    importlib.reload(add_mesh_pipe_joint)
+    importlib.reload(add_mesh_solid)
 
 else:
     from . import add_mesh_extra_objects
diff --git a/io_anim_bvh/__init__.py b/io_anim_bvh/__init__.py
index 6e7576c1c409a622387b028feb30c29745a05d6e..e7d6c7b241203a9ac6ad1827fd6666601d5253cc 100644
--- a/io_anim_bvh/__init__.py
+++ b/io_anim_bvh/__init__.py
@@ -31,11 +31,11 @@ bl_info = {
     "category": "Import-Export"}
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "import_bvh" in locals():
-        imp.reload(import_bvh)
+        importlib.reload(import_bvh)
     if "export_bvh" in locals():
-        imp.reload(export_bvh)
+        importlib.reload(export_bvh)
 
 import bpy
 from bpy.props import (StringProperty,
diff --git a/io_anim_nuke_chan/__init__.py b/io_anim_nuke_chan/__init__.py
index 5dcccfc7380676c033af3f382b4a80fbe4498ddf..16c927829c59723c0674cfdfa8f08ed34931d201 100644
--- a/io_anim_nuke_chan/__init__.py
+++ b/io_anim_nuke_chan/__init__.py
@@ -35,11 +35,11 @@ bl_info = {
 # To support reload properly, try to access a package var,
 # if it's there, reload everything
 if "bpy" in locals():
-    import imp
+    import importlib
     if "import_nuke_chan" in locals():
-        imp.reload(import_nuke_chan)
+        importlib.reload(import_nuke_chan)
     if "export_nuke_chan" in locals():
-        imp.reload(export_nuke_chan)
+        importlib.reload(export_nuke_chan)
 
 
 import bpy
diff --git a/io_coat3D/__init__.py b/io_coat3D/__init__.py
index 3db5b51b202f618754134e43da2ab57f5e627fb1..8cbe4e540713a573f515f350c6535e776acfec27 100644
--- a/io_coat3D/__init__.py
+++ b/io_coat3D/__init__.py
@@ -31,9 +31,9 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(coat)
-    imp.reload(tex)
+    import importlib
+    importlib.reload(coat)
+    importlib.reload(tex)
 else:
     from . import coat
     from . import tex
diff --git a/io_convert_image_to_mesh_img/__init__.py b/io_convert_image_to_mesh_img/__init__.py
index a0d92126439ec3510ff3f92c4312b6fded173b13..35b60997bd4b7199f44a33801e782f23a05aa19d 100644
--- a/io_convert_image_to_mesh_img/__init__.py
+++ b/io_convert_image_to_mesh_img/__init__.py
@@ -46,8 +46,8 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(import_img)
+    import importlib
+    importlib.reload(import_img)
 else:
     from . import import_img
 
diff --git a/io_curve_svg/__init__.py b/io_curve_svg/__init__.py
index 629d8589902c54e719625d7704be539934b19fbf..d97b9b431fbb9509af8bd1c0705e97352ee581a7 100644
--- a/io_curve_svg/__init__.py
+++ b/io_curve_svg/__init__.py
@@ -35,9 +35,9 @@ bl_info = {
 # To support reload properly, try to access a package var,
 # if it's there, reload everything
 if "bpy" in locals():
-    import imp
+    import importlib
     if "import_svg" in locals():
-        imp.reload(import_svg)
+        importlib.reload(import_svg)
 
 
 import bpy
diff --git a/io_mesh_ply/__init__.py b/io_mesh_ply/__init__.py
index d85fb46b8701f8c695bf40d46b0b864dc121e2bb..5fa9b26452bc8c37d7eaa1201fc2bcbd941dea89 100644
--- a/io_mesh_ply/__init__.py
+++ b/io_mesh_ply/__init__.py
@@ -36,11 +36,11 @@ bl_info = {
 # To support reload properly, try to access a package var,
 # if it's there, reload everything
 if "bpy" in locals():
-    import imp
+    import importlib
     if "export_ply" in locals():
-        imp.reload(export_ply)
+        importlib.reload(export_ply)
     if "import_ply" in locals():
-        imp.reload(import_ply)
+        importlib.reload(import_ply)
 
 
 import os
diff --git a/io_mesh_raw/__init__.py b/io_mesh_raw/__init__.py
index 4a5ece92bad756ed96acd59493213f42358544d2..696409320a53f6b9827efcc8fd54cefd19f715be 100644
--- a/io_mesh_raw/__init__.py
+++ b/io_mesh_raw/__init__.py
@@ -33,11 +33,11 @@ bl_info = {
 }
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "import_raw" in locals():
-        imp.reload(import_raw)
+        importlib.reload(import_raw)
     if "export_raw" in locals():
-        imp.reload(export_raw)
+        importlib.reload(export_raw)
 else:
     import bpy
 
diff --git a/io_mesh_stl/__init__.py b/io_mesh_stl/__init__.py
index c3d628d5fa83392bb54c3502759edeb4bde28319..975e52bfce0a1ccc54621d921189d960b4f2f8d5 100644
--- a/io_mesh_stl/__init__.py
+++ b/io_mesh_stl/__init__.py
@@ -48,11 +48,11 @@ Import:
 """
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "stl_utils" in locals():
-        imp.reload(stl_utils)
+        importlib.reload(stl_utils)
     if "blender_utils" in locals():
-        imp.reload(blender_utils)
+        importlib.reload(blender_utils)
 
 import os
 
diff --git a/io_mesh_uv_layout/__init__.py b/io_mesh_uv_layout/__init__.py
index 2460d26d08a02ce1636e1ea12fd245cfd3b22c1c..accf67557bdd982fcc3ded71cf4d72da3683e611 100644
--- a/io_mesh_uv_layout/__init__.py
+++ b/io_mesh_uv_layout/__init__.py
@@ -36,13 +36,13 @@ bl_info = {
 # @todo write the wiki page
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "export_uv_eps" in locals():
-        imp.reload(export_uv_eps)
+        importlib.reload(export_uv_eps)
     if "export_uv_png" in locals():
-        imp.reload(export_uv_png)
+        importlib.reload(export_uv_png)
     if "export_uv_svg" in locals():
-        imp.reload(export_uv_svg)
+        importlib.reload(export_uv_svg)
 
 import bpy
 
diff --git a/io_scene_3ds/__init__.py b/io_scene_3ds/__init__.py
index 981b7ffa3f7c8b8ec7960230ca8a4282522726b9..73459c12c0a611dd2aa45a3b55480c1bec226ce7 100644
--- a/io_scene_3ds/__init__.py
+++ b/io_scene_3ds/__init__.py
@@ -32,11 +32,11 @@ bl_info = {
     "category": "Import-Export"}
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "import_3ds" in locals():
-        imp.reload(import_3ds)
+        importlib.reload(import_3ds)
     if "export_3ds" in locals():
-        imp.reload(export_3ds)
+        importlib.reload(export_3ds)
 
 
 import bpy
diff --git a/io_scene_ms3d/__init__.py b/io_scene_ms3d/__init__.py
index a4d04db904a101880f051312f5303fef932ee430..794aae6b7df9a9130c935ce7b01d01575297e946 100644
--- a/io_scene_ms3d/__init__.py
+++ b/io_scene_ms3d/__init__.py
@@ -48,9 +48,9 @@ bl_info = {
 # To support reload properly, try to access a package var,
 # if it's there, reload everything
 if 'bpy' in locals():
-    import imp
+    import importlib
     if 'io_scene_ms3d.ms3d_ui' in locals():
-        imp.reload(io_scene_ms3d.ms3d_ui)
+        importlib.reload(io_scene_ms3d.ms3d_ui)
 else:
     from io_scene_ms3d.ms3d_ui import (
             Ms3dImportOperator,
@@ -74,8 +74,8 @@ from bpy.types import (
 def register():
     ####################
     # F8 - key
-    import imp
-    imp.reload(ms3d_ui)
+    import importlib
+    importlib.reload(ms3d_ui)
     # F8 - key
     ####################
 
diff --git a/io_scene_obj/__init__.py b/io_scene_obj/__init__.py
index f252da6bed008a6445d7873fd5f914084e0da5ba..c1eb7950697b6869070b6b3fd4ded8833c68c6ca 100644
--- a/io_scene_obj/__init__.py
+++ b/io_scene_obj/__init__.py
@@ -33,11 +33,11 @@ bl_info = {
     "category": "Import-Export"}
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "import_obj" in locals():
-        imp.reload(import_obj)
+        importlib.reload(import_obj)
     if "export_obj" in locals():
-        imp.reload(export_obj)
+        importlib.reload(export_obj)
 
 
 import bpy
diff --git a/io_scene_vrml2/__init__.py b/io_scene_vrml2/__init__.py
index e16ae73f14938d11e94f01c6b429460ee76cf135..594833c791a2b67ea829865ae0d9af8fd8b16e7c 100644
--- a/io_scene_vrml2/__init__.py
+++ b/io_scene_vrml2/__init__.py
@@ -31,9 +31,9 @@ bl_info = {
     "category": "Import-Export"}
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "export_vrml2" in locals():
-        imp.reload(export_vrml2)
+        importlib.reload(export_vrml2)
 
 
 import os
diff --git a/io_scene_x3d/__init__.py b/io_scene_x3d/__init__.py
index 767b223ad0285c0b3e9e715ef5604dba6de6e550..e12dedc779484203099d8f94b314a7e6e9dde976 100644
--- a/io_scene_x3d/__init__.py
+++ b/io_scene_x3d/__init__.py
@@ -31,11 +31,11 @@ bl_info = {
     "category": "Import-Export"}
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "import_x3d" in locals():
-        imp.reload(import_x3d)
+        importlib.reload(import_x3d)
     if "export_x3d" in locals():
-        imp.reload(export_x3d)
+        importlib.reload(export_x3d)
 
 import bpy
 from bpy.props import StringProperty, BoolProperty, EnumProperty, FloatProperty
diff --git a/io_shape_mdd/__init__.py b/io_shape_mdd/__init__.py
index c612543fd36e3c005b6b15130f145d7b625f1844..d3e4c58b40ae723d61654d0e7d06374ce90787e6 100644
--- a/io_shape_mdd/__init__.py
+++ b/io_shape_mdd/__init__.py
@@ -31,11 +31,11 @@ bl_info = {
     "category": "Import-Export"}
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "import_mdd" in locals():
-        imp.reload(import_mdd)
+        importlib.reload(import_mdd)
     if "export_mdd" in locals():
-        imp.reload(export_mdd)
+        importlib.reload(export_mdd)
 
 
 import bpy
diff --git a/light_field_tools/__init__.py b/light_field_tools/__init__.py
index 54e56fe6b2e4111aeb51d51a6eff4aafdac73862..f1899b2d997c2236deeca9d618441e2616a981f9 100644
--- a/light_field_tools/__init__.py
+++ b/light_field_tools/__init__.py
@@ -32,8 +32,8 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(light_field_tools)
+    import importlib
+    importlib.reload(light_field_tools)
 else:
     from . import light_field_tools
 
diff --git a/mesh_inset/__init__.py b/mesh_inset/__init__.py
index 947f43f028673410a2ae0344f4db5addf65047d8..d06546820b84c7f9663e00cfe307079d077cfd2b 100644
--- a/mesh_inset/__init__.py
+++ b/mesh_inset/__init__.py
@@ -32,7 +32,7 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
+    import importlib
 else:
     from . import geom
     from . import model
diff --git a/mocap/__init__.py b/mocap/__init__.py
index 5dca8066761f1ec735d265f3a1f24e5a0c330d1c..c9dd69333b52f3806d08d6987912fcb865c5176d 100644
--- a/mocap/__init__.py
+++ b/mocap/__init__.py
@@ -33,13 +33,13 @@ bl_info = {
 }
 
 if "bpy" in locals():
-    import imp
+    import importlib
     if "mocap_constraints" in locals():
-        imp.reload(mocap_constraints)
+        importlib.reload(mocap_constraints)
     if "retarget" in locals():
-        imp.reload(retarget)
+        importlib.reload(retarget)
     if "mocap_tools" in locals():
-        imp.reload(mocap_tools)
+        importlib.reload(mocap_tools)
 else:
     import bpy
     from bpy.props import (BoolProperty,
diff --git a/netrender/__init__.py b/netrender/__init__.py
index 32abe9f813e68fe7fa4e962ee2db4c7d84833d27..4186f8b94f52b56d5cf68ffc705a77ce4b2502d7 100644
--- a/netrender/__init__.py
+++ b/netrender/__init__.py
@@ -34,19 +34,19 @@ bl_info = {
 
 # To support reload properly, try to access a package var, if it's there, reload everything
 if "init_data" in locals():
-    import imp
-    imp.reload(model)
-    imp.reload(operators)
-    imp.reload(client)
-    imp.reload(slave)
-    imp.reload(master)
-    imp.reload(master_html)
-    imp.reload(utils)
-    imp.reload(balancing)
-    imp.reload(ui)
-    imp.reload(repath)
-    imp.reload(versioning)
-    imp.reload(baking)
+    import importlib
+    importlib.reload(model)
+    importlib.reload(operators)
+    importlib.reload(client)
+    importlib.reload(slave)
+    importlib.reload(master)
+    importlib.reload(master_html)
+    importlib.reload(utils)
+    importlib.reload(balancing)
+    importlib.reload(ui)
+    importlib.reload(repath)
+    importlib.reload(versioning)
+    importlib.reload(baking)
 else:
     from netrender import model
     from netrender import operators
diff --git a/object_fracture/__init__.py b/object_fracture/__init__.py
index 5e1e3f076911600ff1e35425d98e32449544481b..e01f774ab5912561a24f8af09767691cf7ce9041 100644
--- a/object_fracture/__init__.py
+++ b/object_fracture/__init__.py
@@ -30,9 +30,9 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(fracture_ops)
-    imp.reload(fracture_setup)
+    import importlib
+    importlib.reload(fracture_ops)
+    importlib.reload(fracture_setup)
 else:
     from . import fracture_ops
     from . import fracture_setup
diff --git a/object_fracture_cell/__init__.py b/object_fracture_cell/__init__.py
index abc8b7f32e13fb282a15fc3fb0332b4cb2ef6fd2..b5cccff1e634d0ba9b36cb341e3a91e22c0d89b8 100644
--- a/object_fracture_cell/__init__.py
+++ b/object_fracture_cell/__init__.py
@@ -30,8 +30,8 @@ bl_info = {
 
 
 #if "bpy" in locals():
-#    import imp
-#    imp.reload(fracture_cell_setup)
+#    import importlib
+#    importlib.reload(fracture_cell_setup)
 
 import bpy
 from bpy.props import (StringProperty,
diff --git a/object_print3d_utils/__init__.py b/object_print3d_utils/__init__.py
index 5c5d341e296f25dcbf07baa3422031bfd9998760..32cfba7d15ee51d071f98014bcd5e9e278c5afb0 100644
--- a/object_print3d_utils/__init__.py
+++ b/object_print3d_utils/__init__.py
@@ -32,9 +32,9 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(ui)
-    imp.reload(operators)
+    import importlib
+    importlib.reload(ui)
+    importlib.reload(operators)
 else:
     import bpy
     from bpy.props import (StringProperty,
diff --git a/render_copy_settings/__init__.py b/render_copy_settings/__init__.py
index 7e6751109980f0ca37334ee153f76c520066c1d5..7ca39844813489d01474ba254e3591a434e809e8 100644
--- a/render_copy_settings/__init__.py
+++ b/render_copy_settings/__init__.py
@@ -33,10 +33,10 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(operator)
-    imp.reload(panel)
-    imp.reload(translations)
+    import importlib
+    importlib.reload(operator)
+    importlib.reload(panel)
+    importlib.reload(translations)
 
 else:
     from . import operator, panel, translations
diff --git a/render_povray/__init__.py b/render_povray/__init__.py
index 87eafda674b0e7d1b008eed357a7e467714906b5..d0e6d85506033b2168af681c3573d3ee9f172e54 100644
--- a/render_povray/__init__.py
+++ b/render_povray/__init__.py
@@ -32,10 +32,10 @@ bl_info = {
 }
 
 if "bpy" in locals():
-    import imp
-    imp.reload(ui)
-    imp.reload(render)
-    imp.reload(update_files)
+    import importlib
+    importlib.reload(ui)
+    importlib.reload(render)
+    importlib.reload(update_files)
 
 else:
     import bpy
diff --git a/render_renderfarmfi/rpc.py b/render_renderfarmfi/rpc.py
index bb5d6a4571382f5f7e7b050071b01931ebb5987d..22c06e43e130fcf213b7932cd0a7c01606b242e4 100644
--- a/render_renderfarmfi/rpc.py
+++ b/render_renderfarmfi/rpc.py
@@ -17,7 +17,7 @@
 # ##### END GPL LICENSE BLOCK #####
 
 import xmlrpc.client
-import imp
+import importlib
 import time
 import bpy
 
@@ -31,9 +31,9 @@ def _is_dev():
     pwfile = bpy.utils.user_resource('CONFIG', 'rffi', True)
     pwmod = None
     try:
-        pwmod = imp.find_module('rffi_dev',[pwfile])
+        pwmod = implib.find_module('rffi_dev',[pwfile])
         try:
-            user_creds = imp.load_module('rffi_dev', pwmod[0], pwmod[1], pwmod[2])
+            user_creds = implib.load_module('rffi_dev', pwmod[0], pwmod[1], pwmod[2])
             if 'dev' in dir(user_creds) and user_creds.dev:
                 is_dev = True
         except ImportError:
@@ -52,9 +52,9 @@ def _be_verbose():
     pwfile = bpy.utils.user_resource('CONFIG', 'rffi', True)
     pwmod = None
     try:
-        pwmod = imp.find_module('rffi_dev',[pwfile])
+        pwmod = implib.find_module('rffi_dev',[pwfile])
         try:
-            user_creds = imp.load_module('rffi_dev', pwmod[0], pwmod[1], pwmod[2])
+            user_creds = implib.load_module('rffi_dev', pwmod[0], pwmod[1], pwmod[2])
             if 'verbose' in dir(user_creds) and user_creds.verbose:
                 be_verbose = True
         except ImportError:
diff --git a/render_renderfarmfi/utils.py b/render_renderfarmfi/utils.py
index 8afcfd78b80d26bde27ae03bbe1821cee90f3994..50e18cfd732d7230858c7d868640c50814f78eb0 100644
--- a/render_renderfarmfi/utils.py
+++ b/render_renderfarmfi/utils.py
@@ -16,7 +16,7 @@
 #
 # ##### END GPL LICENSE BLOCK #####
 
-import imp
+import importlib
 
 from os.path import join
 
@@ -37,12 +37,12 @@ def _read_credentials():
 
     pwfile = bpy.utils.user_resource('CONFIG', 'rffi', True)
     try:
-        pwmod = imp.find_module('rffi_credentials',[pwfile])
+        pwmod = implib.find_module('rffi_credentials',[pwfile])
     except ImportError:
         _write_credentials('', '')
-        pwmod = imp.find_module('rffi_credentials',[pwfile])
+        pwmod = implib.find_module('rffi_credentials',[pwfile])
     try:
-        user_creds = imp.load_module('rffi_credentials', pwmod[0], pwmod[1], pwmod[2])
+        user_creds = implib.load_module('rffi_credentials', pwmod[0], pwmod[1], pwmod[2])
         bpy.rffi_user = user_creds.user
         bpy.rffi_hash = user_creds.hash
         bpy.rffi_creds_found = True
@@ -50,9 +50,9 @@ def _read_credentials():
         # doesn't exist yet, write template
         _write_credentials('', '')
         pwfile = bpy.utils.user_resource('CONFIG', 'rffi', True)
-        pwmod = imp.find_module('rffi_credentials',[pwfile])
+        pwmod = implib.find_module('rffi_credentials',[pwfile])
         try:
-            user_creds = imp.load_module('rffi_credentials', pwmod[0], pwmod[1], pwmod[2])
+            user_creds = implib.load_module('rffi_credentials', pwmod[0], pwmod[1], pwmod[2])
             bpy.rffi_user = user_creds.user
             bpy.rffi_hash = user_creds.hash
             bpy.rffi_creds_found = True
diff --git a/rigify/__init__.py b/rigify/__init__.py
index 2d96842230aafa5d565d5fde2c3705405c294f67..6e6f751c7461ba52437bc1d17723b8ba083b1368 100644
--- a/rigify/__init__.py
+++ b/rigify/__init__.py
@@ -32,12 +32,12 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(generate)
-    imp.reload(ui)
-    imp.reload(utils)
-    imp.reload(metarig_menu)
-    imp.reload(rig_lists)
+    import importlib
+    importlib.reload(generate)
+    importlib.reload(ui)
+    importlib.reload(utils)
+    importlib.reload(metarig_menu)
+    importlib.reload(rig_lists)
 else:
     from . import utils, rig_lists, generate, ui, metarig_menu
 
diff --git a/rigify/rigs/biped/arm/__init__.py b/rigify/rigs/biped/arm/__init__.py
index b6af3fb8b6ff9bc8335fe17bafd78c5133c3f451..e418a45a1b9e4f1e17dd9a10b13070b9fc362760 100644
--- a/rigify/rigs/biped/arm/__init__.py
+++ b/rigify/rigs/biped/arm/__init__.py
@@ -19,12 +19,12 @@
 # <pep8 compliant>
 
 import bpy
-import imp
+import importlib
 from . import fk, ik, deform
 
-imp.reload(fk)
-imp.reload(ik)
-imp.reload(deform)
+importlib.reload(fk)
+importlib.reload(ik)
+importlib.reload(deform)
 
 script = """
 fk_arm = ["%s", "%s", "%s"]
diff --git a/rigify/rigs/biped/leg/__init__.py b/rigify/rigs/biped/leg/__init__.py
index 0ddaf3ed8bc3e1c7b7149b245eb2865cca8b9303..97241eada9dd7b41f8e7b289827565858f42e244 100644
--- a/rigify/rigs/biped/leg/__init__.py
+++ b/rigify/rigs/biped/leg/__init__.py
@@ -19,12 +19,12 @@
 # <pep8 compliant>
 
 import bpy
-import imp
+import importlib
 from . import fk, ik, deform
 
-imp.reload(fk)
-imp.reload(ik)
-imp.reload(deform)
+importlib.reload(fk)
+importlib.reload(ik)
+importlib.reload(deform)
 
 script = """
 fk_leg = ["%s", "%s", "%s", "%s"]
diff --git a/rigify/rigs/pitchipoy/super_widgets.py b/rigify/rigs/pitchipoy/super_widgets.py
index 3a31f8be47548baea9834ff7419a40b584948bda..aee6c14e9cf04ecdb205577aad89f0ca4886b1f5 100644
--- a/rigify/rigs/pitchipoy/super_widgets.py
+++ b/rigify/rigs/pitchipoy/super_widgets.py
@@ -1,5 +1,5 @@
 import bpy
-import imp
+import importlib
 import importlib
 from   ...utils import create_widget
 
diff --git a/rigify/ui.py b/rigify/ui.py
index 59955957b5bb9487f69eae7311fc3a697a3bd980..46e2905a60b68e709852ec7f2df71956cbb9f6b1 100644
--- a/rigify/ui.py
+++ b/rigify/ui.py
@@ -277,8 +277,8 @@ class Generate(bpy.types.Operator):
     bl_options = {'UNDO'}
 
     def execute(self, context):
-        import imp
-        imp.reload(generate)
+        import importlib
+        importlib.reload(generate)
 
         use_global_undo = context.user_preferences.edit.use_global_undo
         context.user_preferences.edit.use_global_undo = False
diff --git a/rigify/utils.py b/rigify/utils.py
index 15505d0de4329c9fdc07fd4019ee1e49212a02e7..a4e588c98090f89a685951054e1cb430752368f2 100644
--- a/rigify/utils.py
+++ b/rigify/utils.py
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 
 import bpy
-import imp
+import importlib
 import importlib
 import math
 import random
@@ -647,7 +647,7 @@ def get_rig_type(rig_type):
     """
     name = ".%s.%s" % (RIG_DIR, rig_type)
     submod = importlib.import_module(name, package=MODULE_NAME)
-    imp.reload(submod)
+    importlib.reload(submod)
     return submod
 
 
@@ -656,7 +656,7 @@ def get_metarig_module(metarig_name):
     """
     name = ".%s.%s" % (METARIG_DIR, metarig_name)
     submod = importlib.import_module(name, package=MODULE_NAME)
-    imp.reload(submod)
+    importlib.reload(submod)
     return submod
 
 
diff --git a/space_view3d_math_vis/__init__.py b/space_view3d_math_vis/__init__.py
index b25ce989a9e9899a6ffdaee87af90084085b4cdc..056e83fb9880ad67b30822db34f242588c105446 100644
--- a/space_view3d_math_vis/__init__.py
+++ b/space_view3d_math_vis/__init__.py
@@ -33,9 +33,9 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(utils)
-    imp.reload(draw)
+    import importlib
+    importlib.reload(utils)
+    importlib.reload(draw)
 else:
     from . import utils, draw
 
diff --git a/system_demo_mode/__init__.py b/system_demo_mode/__init__.py
index 103c4af8b6d85b21e8539bd9c7a9831689463cbf..60a343fc307761f42369c8a98c3d949f638dd419 100644
--- a/system_demo_mode/__init__.py
+++ b/system_demo_mode/__init__.py
@@ -32,9 +32,9 @@ bl_info = {
 
 # To support reload properly, try to access a package var, if it's there, reload everything
 if "bpy" in locals():
-    import imp
+    import importlib
     if "config" in locals():
-        imp.reload(config)
+        importlib.reload(config)
 
 
 import bpy
diff --git a/ui_translate/__init__.py b/ui_translate/__init__.py
index 64aeb01aa0d71b37e483be4282314360871d7298..04b9d1f3989ef31401d3d4076260d281196d518f 100644
--- a/ui_translate/__init__.py
+++ b/ui_translate/__init__.py
@@ -33,12 +33,12 @@ bl_info = {
 
 
 if "bpy" in locals():
-    import imp
-    imp.reload(settings)
-    imp.reload(edit_translation)
-    imp.reload(update_svn)
-    imp.reload(update_addon)
-    imp.reload(update_ui)
+    import importlib
+    importlib.reload(settings)
+    importlib.reload(edit_translation)
+    importlib.reload(update_svn)
+    importlib.reload(update_addon)
+    importlib.reload(update_ui)
 else:
     import bpy
     from . import (settings,
diff --git a/ui_translate/edit_translation.py b/ui_translate/edit_translation.py
index b486df3785374e6ff56b68d6dcb883d4cffe9f6a..d32a4c5d52a49aeda5f90a7c618ba8d247836b9f 100644
--- a/ui_translate/edit_translation.py
+++ b/ui_translate/edit_translation.py
@@ -19,9 +19,9 @@
 # <pep8 compliant>
 
 if "bpy" in locals():
-    import imp
-    imp.reload(settings)
-    imp.reload(utils_i18n)
+    import importlib
+    importlib.reload(settings)
+    importlib.reload(utils_i18n)
 else:
     import bpy
     from bpy.props import (BoolProperty,
diff --git a/ui_translate/settings.py b/ui_translate/settings.py
index 07479f08ec1079fcd8bc0ae22c53ccdc972c9e6d..cbe25b1458d3eebe80d409907f39a86d41844544 100644
--- a/ui_translate/settings.py
+++ b/ui_translate/settings.py
@@ -19,8 +19,8 @@
 # <pep8 compliant>
 
 if "bpy" in locals():
-    import imp
-    imp.reload(settings_i18n)
+    import importlib
+    importlib.reload(settings_i18n)
 else:
     import bpy
     from bpy.props import (BoolProperty,
diff --git a/ui_translate/update_addon.py b/ui_translate/update_addon.py
index cbf1999f840c88fd80e6185a60cd18e5aac99aca..ab7411ddbfc74c78324b9e3ad21371fa90007e62 100644
--- a/ui_translate/update_addon.py
+++ b/ui_translate/update_addon.py
@@ -19,10 +19,10 @@
 # <pep8 compliant>
 
 if "bpy" in locals():
-    import imp
-    imp.reload(settings)
-    imp.reload(utils_i18n)
-    imp.reload(bl_extract_messages)
+    import importlib
+    importlib.reload(settings)
+    importlib.reload(utils_i18n)
+    importlib.reload(bl_extract_messages)
 else:
     import bpy
     from bpy.props import (BoolProperty,
diff --git a/ui_translate/update_svn.py b/ui_translate/update_svn.py
index ef148c5a9dcefe7cd100e4c3ca464c1929e320d2..7b6b0734557355e4b29f17d3144dfbdd3d60db0d 100644
--- a/ui_translate/update_svn.py
+++ b/ui_translate/update_svn.py
@@ -19,10 +19,10 @@
 # <pep8 compliant>
 
 if "bpy" in locals():
-    import imp
-    imp.reload(settings)
-    imp.reload(utils_i18n)
-    imp.reload(utils_languages_menu)
+    import importlib
+    importlib.reload(settings)
+    importlib.reload(utils_i18n)
+    importlib.reload(utils_languages_menu)
 else:
     import bpy
     from bpy.props import (BoolProperty,
diff --git a/ui_translate/update_ui.py b/ui_translate/update_ui.py
index df2bef32b8e25343883706fad01476008cee29ee..7053b03a348d7a2abb75c8feb508e4bb7b302e2f 100644
--- a/ui_translate/update_ui.py
+++ b/ui_translate/update_ui.py
@@ -19,9 +19,9 @@
 # <pep8 compliant>
 
 if "bpy" in locals():
-    import imp
-    imp.reload(settings)
-    imp.reload(utils_i18n)
+    import importlib
+    importlib.reload(settings)
+    importlib.reload(utils_i18n)
 else:
     import bpy
     from bpy.props import (BoolProperty,