1
0
Эх сурвалжийг харах

Copy extension modules correctly

Thomas Kluyver 11 жил өмнө
parent
commit
220635b94f
1 өөрчлөгдсөн 8 нэмэгдсэн , 3 устгасан
  1. 8 3
      nsist/copymodules.py

+ 8 - 3
nsist/copymodules.py

@@ -1,4 +1,4 @@
-import importlib, importlib.abc
+import importlib, importlib.abc, importlib.machinery
 import os
 import shutil
 import sys
@@ -25,8 +25,12 @@ class ModuleCopier:
         if loader is None:
             raise ImportError('Could not find %s' % modname)
         pkg = loader.is_package(modname)
-        file = loader.get_filename(modname)
-        if isinstance(loader, importlib.abc.FileLoader):
+
+        if isinstance(loader, importlib.machinery.ExtensionFileLoader):
+            shutil.copy2(loader.path, target)
+
+        elif isinstance(loader, importlib.abc.FileLoader):
+            file = loader.get_filename(modname)
             if pkg:
                 pkgdir, basename = os.path.split(file)
                 assert basename.startswith('__init__')
@@ -36,6 +40,7 @@ class ModuleCopier:
                 shutil.copy2(file, target)
         
         elif isinstance(loader, zipimport.zipimporter):
+            file = loader.get_filename(modname)
             prefix = loader.archive + '/' + loader.prefix
             assert file.startswith(prefix)
             path_in_zip = file[len(prefix):]