I solved this by creating a separate executable that is trying to initialize python. My main process will run it and check the exit code and only call PyInitialize if the child process was successful. Thus, python is initialized twice, but it is better than the apparent failure for the user.
Jason source share