diff --git a/dulwich/misc.py b/dulwich/misc.py
index 6893f2a2cc66819c10f4084e2a8f223f6ae93282_ZHVsd2ljaC9taXNjLnB5..64f451f2d50a240502475d57cde0006d1144f377_ZHVsd2ljaC9taXNjLnB5 100644
--- a/dulwich/misc.py
+++ b/dulwich/misc.py
@@ -20,9 +20,15 @@
 These utilities can all be deleted when dulwich decides it wants to stop
 support for python 2.4.
 """
+
+from mercurial import demandimport
+import __builtin__
+orig_import = __builtin__.__import__
+demandimport.disable()
+
 try:
     import hashlib
 except ImportError:
     import sha
 import struct
 
@@ -23,9 +29,10 @@
 try:
     import hashlib
 except ImportError:
     import sha
 import struct
 
+__builtin__.__import__ = orig_import
 
 class defaultdict(dict):
     """A python 2.4 equivalent of collections.defaultdict."""
diff --git a/dulwich/pack.py b/dulwich/pack.py
index 6893f2a2cc66819c10f4084e2a8f223f6ae93282_ZHVsd2ljaC9wYWNrLnB5..64f451f2d50a240502475d57cde0006d1144f377_ZHVsd2ljaC9wYWNrLnB5 100644
--- a/dulwich/pack.py
+++ b/dulwich/pack.py
@@ -30,6 +30,11 @@
 a pointer in to the corresponding packfile.
 """
 
+from mercurial import demandimport
+import __builtin__
+orig_import = __builtin__.__import__
+demandimport.disable()
+
 try:
     from collections import defaultdict
 except ImportError:
@@ -61,6 +66,8 @@
     )
 from misc import make_sha
 
+__builtin__.__import__ = orig_import
+
 supports_mmap_offset = (sys.version_info[0] >= 3 or
         (sys.version_info[0] == 2 and sys.version_info[1] >= 6))