First, some system info
* Windows 7 (also tested on 8 and 10) 
* Python 3.5.1 64bit (previously also tested using several 3.x versions)  (also 
tested with 32 bit, but with 3.4.2) 
* Microsoft Visual Studio 2015 (earlier version of python also tested with 
Visual Studio 2013)  

We have tested with both the debug and release libs for 3.5 and 3.5.1 (those 
available from python installer) with the same problem. 

The following problem has also been tested on Unix and on MacOS where it works 
as expected, the problem is only in Windows. 


Problem description:
We have an application for scientific visualization in which we have enabled 
scripting using embedded python. We have exposed quite some features of our 
application to python using modules, this works perfectly fine. 
The problem we have is that the application crashes as soon as a script is 
trying to import some of python's default libraries, such as os or random. For 
example, running the single line code "import os" produces a crash with the 
following stacktrace:
http://pastebin.com/QpfGrMY0

We initialize the python interpreter using the following: 
http://pastebin.com/uyx6gdMb 

We have tried with and without the Py_NoSiteFlag = 1. When removing that flag 
it works for some modules, for example "import os" works, but other modules, 
for example "import random" crashes. 


In the pastebin link above for the python initialization there are three lines 
commented out, "importModule("os")","importModule("glog")" and 
"importModule("random")", if I uncomment those lines the application will not 
crash when importing those modules. But that is not a viable solution, we can't 
import all possible modules that way. 

The following piece of code is how we execute python code: 
http://pastebin.com/HDUR2LKT


It only crashes for modules that exists , if I try to import a module that does 
not at all exist (eg import unexisting_module) , it fails as expected with a 
nice error message saying it does not exist. 


I don't know if we are doing anything wrong in the initialization of the 
interpreter or when running the script. We can run scripts that are not using 
any modules or are only using the python modules we create in c++ to expose 
functionality of our application.
Everything is working fine on MacOSX and Linux (tested with Ubuntu) which are 
the platforms we support. We had a similar setup before using python 2.x 
instead of 3.x which also worked without any problems. 


The software i am talking about is using QT for gui and and OpenGL for hardware 
accelerated graphics. But I have tested it in a minimal application where all 
QT stuff were omitted and the same issue is still there. 

The software is open source and can be downloaded/clones from 
github.com/inviwo/inviwo. 

The python initialization is done in 
https://github.com/inviwo/inviwo-dev/blob/master/modules/python3/pyinviwo.cpp 
and the script compiling and running is handled in 
https://github.com/inviwo/inviwo-dev/blob/master/modules/python3/pythonscript.cpp


I have searched a lot on google and in the issue tracker for python but found 
nothing that can answer my questions. So I hope that someone here can us solve 
this. 

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to