diff --git a/tools/binman/binman.py b/tools/binman/binman.py
index fa2f551f55420e92e7e110eacf0fc8bef6e83535..d49402a977e8c9034c5745b2cadfcdd3e718b993 100755
--- a/tools/binman/binman.py
+++ b/tools/binman/binman.py
@@ -23,9 +23,6 @@ for dirname in ['../patman', '../dtoc', '..']:
 # Bring in the libfdt module
 sys.path.insert(0, 'scripts/dtc/pylibfdt')
 
-# Also allow entry-type modules to be brought in from the etype directory.
-sys.path.insert(0, os.path.join(our_path, 'etype'))
-
 import cmdline
 import command
 import control
diff --git a/tools/binman/etype/entry.py b/tools/binman/entry.py
similarity index 96%
rename from tools/binman/etype/entry.py
rename to tools/binman/entry.py
index cbcabe20582a4997bbbafacc17d2cf59d802820d..5374178542ed1bde020d326bf48e9a6d88a5599f 100644
--- a/tools/binman/etype/entry.py
+++ b/tools/binman/entry.py
@@ -14,10 +14,14 @@ except:
     have_importlib = False
 
 import fdt_util
+import os
+import sys
 import tools
 
 modules = {}
 
+our_path = os.path.dirname(os.path.realpath(__file__))
+
 class Entry(object):
     """An Entry in the section
 
@@ -80,8 +84,12 @@ class Entry(object):
             module_name = module_name.split('@')[0]
         module = modules.get(module_name)
 
+        # Also allow entry-type modules to be brought in from the etype directory.
+
         # Import the module if we have not already done so.
         if not module:
+            old_path = sys.path
+            sys.path.insert(0, os.path.join(our_path, 'etype'))
             try:
                 if have_importlib:
                     module = importlib.import_module(module_name)
@@ -90,6 +98,8 @@ class Entry(object):
             except ImportError:
                 raise ValueError("Unknown entry type '%s' in node '%s'" %
                         (etype, node.path))
+            finally:
+                sys.path = old_path
             modules[module_name] = module
 
         # Call its constructor to get the object we want.