Sjoerd Mullender:
When printing missing modules, also print the module they were
imported from.
diff --git a/Tools/freeze/modulefinder.py b/Tools/freeze/modulefinder.py
index e406c6a..5c05c3a 100644
--- a/Tools/freeze/modulefinder.py
+++ b/Tools/freeze/modulefinder.py
@@ -220,6 +220,7 @@
return m
if self.badmodules.has_key(fqname):
self.msgout(3, "import_module -> None")
+ self.badmodules[fqname][parent.__name__] = None
return None
try:
fp, pathname, stuff = self.find_module(partname,
@@ -279,7 +280,7 @@
self.import_hook(name, m)
except ImportError, msg:
self.msg(2, "ImportError:", str(msg))
- self.badmodules[name] = None
+ self.badmodules[name] = {m.__name__:None}
elif op == IMPORT_FROM:
name = co.co_names[oparg]
assert lastname is not None
@@ -289,7 +290,7 @@
except ImportError, msg:
self.msg(2, "ImportError:", str(msg))
fullname = lastname + "." + name
- self.badmodules[fullname] = None
+ self.badmodules[fullname] = {m.__name__:None}
else:
lastname = None
for c in co.co_consts:
@@ -361,7 +362,9 @@
for key in keys:
# ... but not if they were explicitely excluded.
if key not in self.excludes:
- print "?", key
+ mods = self.badmodules[key].keys()
+ mods.sort()
+ print "?", key, "from", string.join(mods, ', ')
def test():