The problem is caused by this bug: http://bugs.python.org/issue9867 I've been trying to make a workaround, but unfortunately there are many other process calls in the Xlib library, which are suffering from the same issue.... Though I don't understand why aren't these exceptions raised when I run a simple python code. Here is an example:
#include <Python/Python.h> //#include <string> int main (int argc, const char * argv[]) { Py_Initialize(); PyRun_SimpleString("import sys;from OCC import V3d;import subprocess;import time;)"); printf("%s\n",Py_GetPath()); //PyRun_AnyFile(fopen("/Users/istvancsanady/Documents/workspace/butterfly/__main__.py", "r"), NULL); PyRun_SimpleString("v3d_module_library = sys.modules['OCC._V3d'].__file__;p1 = subprocess.Popen(['otool','-L','%s'%v3d_module_library],stdout=subprocess.PIPE);time.sleep(1);p2 = subprocess.Popen(['grep','-i','libTkOpenGl'],stdin=p1.stdout,stdout=subprocess.PIPE);time.sleep(1);output = p2.communicate()[0]"); pause(); return 0; } And the exception: *Traceback (most recent call last):* * File "<string>", line 1, in <module>* * File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 595, in __init__* * errread, errwrite)* * File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 1101, in _execute_child* * data = os.read(errpipe_read, 1048576) # Exceptions limited to 1 MB* *OSError: [Errno 4] Interrupted system call* * * *Fortunately I can hardcode the linked libraries if I want to distribute an app with pyocc, however this bug is a pain in my ass, because I can't eliminate all process calls in the Xlib... * *Python version: 2.6* *Mac OS X 10.6.7* * * *István* * * On Mon, Jun 20, 2011 at 5:42 PM, Thomas Paviot <tpav...@gmail.com> wrote: > 2011/6/20 Csanády István <istvancsan...@gmail.com> >> >> Hi All! >> I am trying to use pyocc from C++, with the embedded python api. If I >> run the app from XCode, I got the following errors when initializing >> SimpleGUI: >> Traceback (most recent call last): >> File "???", line 7, in <module> >> File "/Users/istvancsanady/Documents/workspace/butterfly/src/pool.py", >> line 12, in <module> >> display, start_display, add_menu, add_function_to_menu = >> init_display() >> File "/Library/Python/2.6/site-packages/OCC/Display/SimpleGui.py", >> line 173, in init_display >> from XDisplay import XOCCWindow >> File "/Library/Python/2.6/site-packages/OCC/Display/XDisplay.py", >> line 28, in <module> >> import OCCViewer >> File "/Library/Python/2.6/site-packages/OCC/Display/OCCViewer.py", >> line 77, in <module> >> set_CSF_GraphicShr() >> File "/Library/Python/2.6/site-packages/OCC/Display/OCCViewer.py", >> line 62, in set_CSF_GraphicShr >> p2 = >> subprocess.Popen(['grep','-i','libTkOpenGl'],stdin=p1.stdout,stdout=subprocess.PIPE) >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", >> line 595, in __init__ >> errread, errwrite) >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", >> line 1101, in _execute_child >> data = os.read(errpipe_read, 1048576) # Exceptions limited to 1 MB >> OSError: [Errno 4] Interrupted system call >> Or the other one: >> Traceback (most recent call last): >> File "???", line 7, in <module> >> File "/Users/istvancsanady/Documents/workspace/butterfly/src/pool.py", >> line 12, in <module> >> display, start_display, add_menu, add_function_to_menu = >> init_display() >> File "/Library/Python/2.6/site-packages/OCC/Display/SimpleGui.py", >> line 174, in init_display >> win = XOCCWindow(display_xlib.Display(),"pythonOCC-%s 3d viewer >> ('python-xlib' backend)"%VERSION) >> File "/Library/Python/2.6/site-packages/Xlib/display.py", line 83, in >> __init__ >> self.display = _BaseDisplay(display) >> File "/Library/Python/2.6/site-packages/Xlib/display.py", line 65, in >> __init__ >> apply(protocol.display.Display.__init__, (self, ) + args, keys) >> File "/Library/Python/2.6/site-packages/Xlib/protocol/display.py", >> line 44, in __init__ >> name, host, displayno, screenno = connect.get_display(display) >> File "/Library/Python/2.6/site-packages/Xlib/support/connect.py", >> line 64, in get_display >> mod = __import__(modname, globals()) >> File "/Library/Python/2.6/site-packages/Xlib/support/unix_connect.py", >> line 43, in <module> >> uname = platform.uname() >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/platform.py", >> line 1194, in uname >> processor = _syscmd_uname('-p','') >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/platform.py", >> line 950, in _syscmd_uname >> output = string.strip(f.read()) >> IOError: [Errno 4] Interrupted system call >> >> And another one: >> >> Traceback (most recent call last): >> File "???", line 7, in <module> >> File "/Users/istvancsanady/Documents/workspace/butterfly/src/pool.py", >> line 12, in <module> >> display, start_display, add_menu, add_function_to_menu = init_display() >> File "/Library/Python/2.6/site-packages/OCC/Display/SimpleGui.py", >> line 174, in init_display >> win = XOCCWindow(display_xlib.Display(),"pythonOCC-%s 3d viewer >> ('python-xlib' backend)"%VERSION) >> File "/Library/Python/2.6/site-packages/Xlib/display.py", line 83, in >> __init__ >> self.display = _BaseDisplay(display) >> File "/Library/Python/2.6/site-packages/Xlib/display.py", line 65, in >> __init__ >> apply(protocol.display.Display.__init__, (self, ) + args, keys) >> File "/Library/Python/2.6/site-packages/Xlib/protocol/display.py", >> line 44, in __init__ >> name, host, displayno, screenno = connect.get_display(display) >> File "/Library/Python/2.6/site-packages/Xlib/support/connect.py", >> line 64, in get_display >> mod = __import__(modname, globals()) >> File "/Library/Python/2.6/site-packages/Xlib/support/unix_connect.py", >> line 43, in <module> >> uname = platform.uname() >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/platform.py", >> line 1194, in uname >> processor = _syscmd_uname('-p','') >> File >> "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/platform.py", >> line 950, in _syscmd_uname >> output = string.strip(f.read()) >> IOError: [Errno 4] Interrupted system call >> >> >> >> And the strangest thing: sometimes IT WORKS! If I start the app from >> Terminal or Finder, everything works always fine... Any ideas? >> >> István > > Hi, > > Reading the trace, I have the feeling you're trying to use multithreading or > multiprocessing. It's a bad idea to call a GUI from a specific thread (the > GUI mainloop generally conflicts with the subthread). > > I can't help you further without any information about the code you're > running. > > Thomas > > > _______________________________________________ > Pythonocc-users mailing list > Pythonocc-users@gna.org > https://mail.gna.org/listinfo/pythonocc-users > >
_______________________________________________ Pythonocc-users mailing list Pythonocc-users@gna.org https://mail.gna.org/listinfo/pythonocc-users