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 <[email protected]> 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 <[email protected]>
>
>> 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 <[email protected]> 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 <[email protected]>
>>>
>>>> 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 <[email protected]>
>>>> wrote:
>>>> > 2011/6/20 Csanády István <[email protected]>
>>>> >>
>>>> >> 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
>>>> > [email protected]
>>>> > https://mail.gna.org/listinfo/pythonocc-users
>>>> >
>>>> >
>>>>
>>>>
>>>> _______________________________________________
>>>> Pythonocc-users mailing list
>>>> [email protected]
>>>> https://mail.gna.org/listinfo/pythonocc-users
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Pythonocc-users mailing list
>>> [email protected]
>>> https://mail.gna.org/listinfo/pythonocc-users
>>>
>>>
>>
>> _______________________________________________
>> Pythonocc-users mailing list
>> [email protected]
>> https://mail.gna.org/listinfo/pythonocc-users
>>
>>
>
> _______________________________________________
> Pythonocc-users mailing list
> [email protected]
> https://mail.gna.org/listinfo/pythonocc-users
>
>
_______________________________________________
Pythonocc-users mailing list
[email protected]
https://mail.gna.org/listinfo/pythonocc-users