Python embedded - linking problem on Linux - trying again

Kim Petersen kp at kyborg.dk
Wed Aug 14 11:12:08 EDT 2002


Jarkko Torppa wrote:
> In article <3D57BD22.8090305 at kyborg.dk>, Kim Petersen wrote:
> 
>>When creating an embedded python in an RM/Cobol-85 interpretor, i have 
>>the following problem:
>>
>>It seems that i have to link all the modules (the .so's) that i need 
>>with the new dynamic link library, isn't it at all possible to make it 
>>(the python embedded interpretor) just find the .so's like the regular 
>>interpretor does?
> 
> 
> What is the error message when trying to import something that
> is not linked in ?

Hmmm, interesting ... my embedded python has no possibility of writing 
the errors (RM/Cobol limitation) - but when enforced to do so with a
try-except with traceback print to file i was able to capture what i 
haven't seen before ;-)

This is the traceback:

Traceback (most recent call last):
   File "RM_Gui.py", line 17, in ?
     import time
ImportError: /usr/lib/python2.1/lib-dynload/timemodule.so: undefined 
symbol: PyExc_IOError
Traceback (most recent call last):
   File "RM_Gui.py", line 32, in RM_GUI_avail
     if sys.platform=='win32':
   File "rmcobol85.py", line 6, in ?
     import RM_Gui
   File "RM_Gui.py", line 86, in ?
     if __name__ == "__main__":
TypeError: function takes at least 2 arguments (1 given)

PyExc_IOError seems to be the culprit ????


> 
> Check with strace what files/paths that failing import tries to search.
> 
What do i look for? excepting these: (bit long trace below - which to me
indicates that it actually found and opened the timemodule ????)

stat64("time", 0xbfffb420)              = -1 ENOENT (No such file or 
directory)
open("time.so", O_RDONLY)               = -1 ENOENT (No such file or 
directory)
open("timemodule.so", O_RDONLY)         = -1 ENOENT (No such file or 
directory)
open("time.py", O_RDONLY)               = -1 ENOENT (No such file or 
directory)
open("time.pyc", O_RDONLY)              = -1 ENOENT (No such file or 
directory)
stat64("/usr/lib/python2.1/time", 0xbfffb420) = -1 ENOENT (No such file 
or directory)
open("/usr/lib/python2.1/time.so", O_RDONLY) = -1 ENOENT (No such file 
or directory)
open("/usr/lib/python2.1/timemodule.so", O_RDONLY) = -1 ENOENT (No such 
file or directory)
open("/usr/lib/python2.1/time.py", O_RDONLY) = -1 ENOENT (No such file 
or directory)
open("/usr/lib/python2.1/time.pyc", O_RDONLY) = -1 ENOENT (No such file 
or directory)
stat64("/usr/lib/python2.1/plat-linux2/time", 0xbfffb420) = -1 ENOENT 
(No such file or directory)
open("/usr/lib/python2.1/plat-linux2/time.so", O_RDONLY) = -1 ENOENT (No 
such file or directory)
open("/usr/lib/python2.1/plat-linux2/time.so", O_RDONLY) = -1 ENOENT (No 
such file or directory)
open("/usr/lib/python2.1/plat-linux2/timemodule.so", O_RDONLY) = -1 
ENOENT (No such file or directory)
open("/usr/lib/python2.1/plat-linux2/time.py", O_RDONLY) = -1 ENOENT (No 
such file or directory)
open("/usr/lib/python2.1/plat-linux2/time.pyc", O_RDONLY) = -1 ENOENT 
(No such file or directory)
stat64("/usr/lib/python2.1/lib-tk/time", 0xbfffb420) = -1 ENOENT (No 
such file or directory)
open("/usr/lib/python2.1/lib-tk/time.so", O_RDONLY) = -1 ENOENT (No such 
file or directory)
open("/usr/lib/python2.1/lib-tk/timemodule.so", O_RDONLY) = -1 ENOENT 
(No such file or directory)
open("/usr/lib/python2.1/lib-tk/time.py", O_RDONLY) = -1 ENOENT (No such 
file or directory)
open("/usr/lib/python2.1/lib-tk/time.pyc", O_RDONLY) = -1 ENOENT (No 
such file or directory)
stat64("/usr/lib/python2.1/lib-dynload/time", 0xbfffb420) = -1 ENOENT 
(No such file or directory)
open("/usr/lib/python2.1/lib-dynload/time.so", O_RDONLY) = -1 ENOENT (No 
such file or directory)
open("/usr/lib/python2.1/lib-dynload/timemodule.so", O_RDONLY) = 7
fstat64(7, {st_mode=S_IFREG|0555, st_size=18346, ...}) = 0
open("/usr/lib/python2.1/lib-dynload/timemodule.so", O_RDONLY) = 8
read(8, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\20"..., 
1024) = 1024
fstat64(8, {st_mode=S_IFREG|0555, st_size=18346, ...}) = 0
old_mmap(NULL, 17012, PROT_READ|PROT_EXEC, MAP_PRIVATE, 8, 0) = 0x4025a000
mprotect(0x4025d000, 4724, PROT_NONE)   = 0
old_mmap(0x4025d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 
8, 0x2000) = 0x4025d000




-- 
Med Venlig Hilsen / Regards

Kim Petersen - Kyborg A/S
IT - Innovationshuset
Havnepladsen 2
7100 Vejle
Tlf. +4576408183 || Fax. +4576408188




More information about the Python-list mailing list