New submission from Etienne Fortin:

The pywin32 package use imp.load_dynamic() to load a DLL with Windows specific 
type. On Python 3.4+ imp.load_dynamic() point to the following code which use 
the newer importlib module:

        import importlib.machinery
        loader = importlib.machinery.ExtensionFileLoader(name, path)
        return loader.load_module()

In pywin32 a mechanism is used to be able to have part of a module globals 
defined in python (pywintypes.py), and the reminder in a DLL 
(pywintypesXX.dll). The code in pywin32 between 3.4 and 3.5 is the same.

In Python 3.4, calling imp.load_dynamic(), which point to the code above, 
inside the python part of the module definition loads the types defined in the 
DLL.

In Python 3.5, calling imp.load_dynamic(), which also points to the code above, 
inside the python part of the module definition reloads the same python module, 
not the DLL. Even though a path to a DLL is given AND when doing introspection 
of the module it clearly points to the specified DLL. 

This is a change of behavior that breaks pywin32, but possibly other modules 
that rely on this behavior.

----------
components: Extension Modules, Windows
files: pywintypes.py
messages: 247573
nosy: ebfortin, paul.moore, steve.dower, tim.golden, zach.ware
priority: normal
severity: normal
status: open
title: Change of behavior for importlib between 3.4 and 3.5 with DLL loading
type: behavior
versions: Python 3.5
Added file: http://bugs.python.org/file40055/pywintypes.py

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue24748>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to