SF #841977 - modulefinder fails to find extension modules in packages
The find_all_submodules() method in modulefinder only
looks for *.py, *.pyc, and *.pyo files. Python
extension modules are only found if they are referenced
in import statements somewhere.
This patch uses the actual list from imp.get_suffixes().
Backported myself.
diff --git a/Lib/modulefinder.py b/Lib/modulefinder.py
index be59f97..6dec0e5 100644
--- a/Lib/modulefinder.py
+++ b/Lib/modulefinder.py
@@ -210,7 +210,12 @@
if not m.__path__:
return
modules = {}
- suffixes = [".py", ".pyc", ".pyo"]
+ # 'suffixes' used to be a list hardcoded to [".py", ".pyc", ".pyo"].
+ # But we must also collect Python extension modules - although
+ # we cannot separate normal dlls from Python extensions.
+ suffixes = []
+ for triple in imp.get_suffixes():
+ suffixes.append(triple[0])
for dir in m.__path__:
try:
names = os.listdir(dir)