Fix importing build extension for Python >= 3.8 in Windows#12
Merged
diegoferigo merged 4 commits intomasterfrom May 27, 2021
Merged
Fix importing build extension for Python >= 3.8 in Windows#12diegoferigo merged 4 commits intomasterfrom
diegoferigo merged 4 commits intomasterfrom
Conversation
to fix Python >= 3.8 in Windows
using Python >= 3.8 in Windows
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #8
Apparently the problem is not a bug but a change of behavior in Windows. Refer to
add_dll_directoryfor more details.Differently from many, I implemented this fix using a context manager that automatically closes the dll cookies. Since this functionality is necessary to properly import SWIG bindings in the affected platform (I suspect that also pybind11 is affected), I added the context manager to
cmake-build-extensionso that it can be used downstream. The only change is that, if the context manager is used e.g. in the__init__.pyfile, the downstream package has to markcmake-build-extensionasinstall_requireand no longer as onlysetup_require(or, in a more modern setup, in therequiresfield of pyproject.toml).Related resources from which this PR was inspired: