diff --git a/tools/binman/main.py b/tools/binman/main.py
index 97a8a02..efa7fa8 100755
--- a/tools/binman/main.py
+++ b/tools/binman/main.py
@@ -20,8 +20,9 @@
 # Bring in the patman and dtoc libraries (but don't override the first path
 # in PYTHONPATH)
 our_path = os.path.dirname(os.path.realpath(__file__))
-for dirname in ['../patman', '../dtoc', '../concurrencytest', '..']:
-    sys.path.insert(2, os.path.realpath(os.path.join(our_path, dirname)))
+sys.path.insert(2, os.path.join(our_path, '..'))
+
+from patman import test_util
 
 # Bring in the libfdt module
 sys.path.insert(2, 'scripts/dtc/pylibfdt')
diff --git a/tools/buildman/main.py b/tools/buildman/main.py
index 52a83fc..2b71473 100755
--- a/tools/buildman/main.py
+++ b/tools/buildman/main.py
@@ -16,7 +16,6 @@
 # Bring in the patman libraries
 our_path = os.path.dirname(os.path.realpath(__file__))
 sys.path.insert(1, os.path.join(our_path, '..'))
-sys.path.insert(2, os.path.join(our_path, '../patman'))
 
 # Our modules
 from buildman import board
@@ -35,7 +34,7 @@
     import doctest
 
     result = unittest.TestResult()
-    for module in ['toolchain', 'gitutil']:
+    for module in ['buildman.toolchain', 'patman.gitutil']:
         suite = doctest.DocTestSuite(module)
         suite.run(result)
 
diff --git a/tools/buildman/test.py b/tools/buildman/test.py
index b37c37b2..40811ba 100644
--- a/tools/buildman/test.py
+++ b/tools/buildman/test.py
@@ -11,7 +11,6 @@
 
 # Bring in the patman libraries
 our_path = os.path.dirname(os.path.realpath(__file__))
-sys.path.append(os.path.join(our_path, '../patman'))
 
 from buildman import board
 from buildman import bsettings
diff --git a/tools/dtoc/main.py b/tools/dtoc/main.py
index 6c63d63..b94d9c3 100755
--- a/tools/dtoc/main.py
+++ b/tools/dtoc/main.py
@@ -32,7 +32,6 @@
 
 # Bring in the patman libraries
 our_path = os.path.dirname(os.path.realpath(__file__))
-sys.path.append(os.path.join(our_path, '../patman'))
 sys.path.append(os.path.join(our_path, '..'))
 
 # Bring in the libfdt module
diff --git a/tools/dtoc/test_fdt.py b/tools/dtoc/test_fdt.py
index d682307..375e906 100755
--- a/tools/dtoc/test_fdt.py
+++ b/tools/dtoc/test_fdt.py
@@ -14,8 +14,7 @@
 
 # Bring in the patman libraries
 our_path = os.path.dirname(os.path.realpath(__file__))
-for dirname in ['../patman', '..']:
-    sys.path.insert(0, os.path.join(our_path, dirname))
+sys.path.insert(1, os.path.join(our_path, '..'))
 
 from dtoc import fdt
 from dtoc import fdt_util
diff --git a/tools/genboardscfg.py b/tools/genboardscfg.py
index 4f6382b..4ee7aa1 100755
--- a/tools/genboardscfg.py
+++ b/tools/genboardscfg.py
@@ -22,8 +22,7 @@
 import tempfile
 import time
 
-sys.path.insert(1, os.path.join(os.path.dirname(__file__), 'buildman'))
-import kconfiglib
+from buildman import kconfiglib
 
 ### constant variables ###
 OUTPUT_FILE = 'boards.cfg'
diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index 0dd8670..36361f9 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -314,8 +314,6 @@
 import threading
 import time
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
-sys.path.append(os.path.join(os.path.dirname(__file__), 'patman'))
 from buildman import bsettings
 from buildman import kconfiglib
 from buildman import toolchain
diff --git a/tools/patman/main.py b/tools/patman/main.py
index f59367f..f3d9c0c 100755
--- a/tools/patman/main.py
+++ b/tools/patman/main.py
@@ -13,7 +13,7 @@
 import unittest
 
 if __name__ == "__main__":
-    # Allow 'import xxx to work'
+    # Allow 'from patman import xxx to work'
     our_path = os.path.dirname(os.path.realpath(__file__))
     sys.path.append(os.path.join(our_path, '..'))
 
diff --git a/tools/rmboard.py b/tools/rmboard.py
index 1ed2527..06c3562 100755
--- a/tools/rmboard.py
+++ b/tools/rmboard.py
@@ -30,7 +30,6 @@
 
 # Bring in the patman libraries
 our_path = os.path.dirname(os.path.realpath(__file__))
-sys.path.append(os.path.join(our_path, '../tools/patman'))
 
 from patman import command
 
