By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,986 Members | 1,568 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,986 IT Pros & Developers. It's quick & easy.

C Embedding problem, ImportError

P: n/a
I'm trying to run some python scripts from a proggy of mine. Most of the
time it works great, but I seem to be having problems with some
modules. Here's what I get when I try importing math (applies to all
..../lib-dynload/ modules, I guess):

ImportError: /usr/lib/python2.3/lib-dynload/math.so: undefined
symbol: PyExc_OverflowError

Executing the same script from command-line works ok. What gives?
I'm using python 2.3.2, and the file using the python/c is compiled
invoking:

gcc -o libabc.lib -shared -fpic lpython2.3 -lm abc.c

Thanks,

- Tero

Jul 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Tero Pihlajakoski wrote:
I'm trying to run some python scripts from a proggy of mine. Most of the
time it works great, but I seem to be having problems with some
modules. Here's what I get when I try importing math (applies to all
.../lib-dynload/ modules, I guess):

ImportError: /usr/lib/python2.3/lib-dynload/math.so: undefined
symbol: PyExc_OverflowError

Executing the same script from command-line works ok. What gives?
I'm using python 2.3.2, and the file using the python/c is compiled
invoking:

gcc -o libabc.lib -shared -fpic lpython2.3 -lm abc.c


I keep having this issue too, but am far from a Linux guru. I *think*
last time I solved it, it required an explicit dlopen() with RTLD_GLOBAL
for libpythonxx.so. This was required to map the symbols globally, so
other extensions could use it (even though the main program itself does
not need the dlopen().

If you find a better answer, please let me know :)

Mark.

Jul 18 '05 #2

P: n/a

hi Tero,

I also faced similar kind of problem on HP & IBM workstations.
This is how i solved.

run python outside & do following.
It gives out the link options required for that platform, just
re-compile your application with those options.

more information you can find out in python documentation chapter
5.6 Linking Requirements

in my downloaded documentation it is at ~/python-docs-2.3/ext/link-reqs.html
import distutils.sysconfig
distutils.sysconfig.get_config_var('LINKFORSHARED' )
'-Xlinker -export-dynamic'

Hope this helps!! :-)

Anand

Tero Pihlajakoski wrote:
I'm trying to run some python scripts from a proggy of mine. Most of the
time it works great, but I seem to be having problems with some
modules. Here's what I get when I try importing math (applies to all
.../lib-dynload/ modules, I guess):

ImportError: /usr/lib/python2.3/lib-dynload/math.so: undefined
symbol: PyExc_OverflowError

Executing the same script from command-line works ok. What gives?
I'm using python 2.3.2, and the file using the python/c is compiled
invoking:

gcc -o libabc.lib -shared -fpic lpython2.3 -lm abc.c

Thanks,

- Tero

Jul 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.