Finally, I made an ugly workaround, I hope later I will be able to get rid of it. Until then if someone interested: In OCCViewer.py in the set_CSF_GraphicShr:
if sys.platform == 'darwin': # MacOSX : run the otool -L tool to check to which libTkOpenGl library it's linked # otool -L /Library/Python/2.6/site-packages/OCC/_V3d.so | grep -i #p1 = subprocess.Popen(['otool','-L',v3d_module_library],stdout=subprocess.PIPE,shell=True) #p2 = subprocess.Popen(['grep','-i','libTkOpenGl'],stdin=p1.stdout,stdout=subprocess.PIPE,shell = True) f = tempfile.NamedTemporaryFile(); os.system('otool -L '+v3d_module_library+' | grep -i libTkOpenGl>'+ f.name) output = f.file.readline() On Tue, Jun 21, 2011 at 4:45 PM, Thomas Paviot <tpav...@gmail.com> wrote: > I just mean: take only the modeling/data exchange parts of pythonOCC, > serialize meshes and then render them with a powerful c++ rendering library > (for instance vtk or coin3d). > > If ever it's not possible, and you absolutely need the GUI to be launched > from the python script, you can perhaps create a python script from your C++ > app and laucnh it from a C++ pipe rather than embedding python into C++. > > Thomas > > > 2011/6/21 Csanády István <istvancsan...@gmail.com> > >> I am trying to integrate the pyocc with a native C++ application. What do >> you mean by "getting out the visualization part out of the subprocesses"? >> Hardcoding the library path? If I won't be able to manage this problem, I >> will do that. >> >> On Tue, Jun 21, 2011 at 4:01 PM, Thomas Paviot <tpav...@gmail.com> wrote: >> >>> Hi Istvan, >>> >>> Don't know what you're trying to do, but it looks like something >>> complicated. Get the visualization part out of the subprocesses and I guess >>> it will be better. >>> >>> THomas >>> >>> >>> 2011/6/21 Csanády István <istvancsan...@gmail.com> >>> >>>> The problem is caused by this bug: http://bugs.python.org/issue9867I'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 >>>> >>>> >>> >>> _______________________________________________ >>> 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 >> >> > > _______________________________________________ > 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