diff --git a/src/python/m5/params.py b/src/python/m5/params.py
index 72cc0b2..757a4f2 100644
--- a/src/python/m5/params.py
+++ b/src/python/m5/params.py
@@ -73,12 +73,15 @@
 from .util import *
 
 def isSimObject(*args, **kwargs):
+    from . import SimObject
     return SimObject.isSimObject(*args, **kwargs)
 
 def isSimObjectSequence(*args, **kwargs):
+    from . import SimObject
     return SimObject.isSimObjectSequence(*args, **kwargs)
 
 def isSimObjectClass(*args, **kwargs):
+    from . import SimObject
     return SimObject.isSimObjectClass(*args, **kwargs)
 
 allParams = {}
@@ -175,6 +178,7 @@
 
     def __getattr__(self, attr):
         if attr == 'ptype':
+            from . import SimObject
             ptype = SimObject.allClasses[self.ptype_str]
             assert isSimObjectClass(ptype)
             self.ptype = ptype
@@ -2158,5 +2162,3 @@
            'NextEthernetAddr', 'NULL',
            'MasterPort', 'SlavePort',
            'VectorMasterPort', 'VectorSlavePort']
-
-from . import SimObject
diff --git a/src/python/m5/proxy.py b/src/python/m5/proxy.py
index 346ed92..b939bc0 100644
--- a/src/python/m5/proxy.py
+++ b/src/python/m5/proxy.py
@@ -50,7 +50,6 @@
 
 import copy
 
-from . import params
 
 class BaseProxy(object):
     def __init__(self, search_self, search_up):
@@ -235,6 +234,7 @@
         return 'all'
 
 def isproxy(obj):
+    from . import params
     if isinstance(obj, (BaseProxy, params.EthernetAddr)):
         return True
     elif isinstance(obj, (list, tuple)):
@@ -264,6 +264,3 @@
 
 # limit exports on 'from proxy import *'
 __all__ = ['Parent', 'Self']
-
-# see comment on imports at end of __init__.py.
-import params # for EthernetAddr
