Workaround missing main symbol in Python >= 3.9 #937
Merged
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.
This patch changes
Libdl.dlsym(proc_handle, :main)
toLibdl.dlsym(proc_handle, :_start)
to fix JuliaPy/pyjulia#459In Python >= 3.9,
main
cannot be accessed through the process handle (dlopen(NULL, ...)
):while it has been possible for < 3.9.
$ python3.8 -c 'import ctypes; ctypes.CDLL(None).main' # no error
I'm not sure why this is the case since
python3.9
binary does seem to havemain
:That said, JuliaPy/pyjulia#459 can now be solved by checking
_start
instead. (Should we checkmain
first and then fallback to_start
?)A better fix probably is to use Preferences.jl as the build-time option (#835) and get rid of automatic detection. But I wonder if this is good enough for now?
@Keno It'd be great if you can look at this, as you wrote this originally in #419.