Guido van Rossum wrote: > > (There's a linux question at the bottom.) > > > > I decided to build the simple embedding demo in Demo/embed/. After > > > fixing the Makefile (checkins coming), I ended up with one problem: > > > the 'import site.py' failed error. When using -v I get this traceback: > > > > > > 'import site' failed; traceback: > > > Traceback (most recent call last): > > > File "/usr/local/lib/python2.0/site.py", line 146, in ? > > > sys.setdefaultencoding('ascii') > > > LookupError: no codec search functions registered: can't find encoding > > > > > > Is there some part of the initialization that I'm forgetting? > > > > Looks like the 'import encodings' failed. Could you check this > > with -vv ? > > Thanks for the hint. Seems I've got it nailed down: it's looking for > the struct module: > > [...] > import codecs # precompiled from /usr/local/lib/python2.0/codecs.pyc > # trying /usr/local/lib/python2.0/struct.so > # trying /usr/local/lib/python2.0/structmodule.so > # trying /usr/local/lib/python2.0/struct.py > # trying /usr/local/lib/python2.0/struct.pyc > # trying /usr/local/lib/python2.0/plat-linux2/struct.so > # trying /usr/local/lib/python2.0/plat-linux2/structmodule.so > # trying /usr/local/lib/python2.0/plat-linux2/struct.py > # trying /usr/local/lib/python2.0/plat-linux2/struct.pyc > # trying /usr/local/lib/python2.0/lib-tk/struct.so > # trying /usr/local/lib/python2.0/lib-tk/structmodule.so > # trying /usr/local/lib/python2.0/lib-tk/struct.py > # trying /usr/local/lib/python2.0/lib-tk/struct.pyc > # trying /usr/local/lib/python2.0/lib-dynload/struct.so > # trying /usr/local/lib/python2.0/lib-dynload/structmodule.so > 'import site' failed; traceback: > Traceback (most recent call last): > File "/usr/local/lib/python2.0/site.py", line 146, in ? > sys.setdefaultencoding('ascii') > LookupError: no codec search functions registered: can't find encoding > [...] > > But the bizarre thing is that the last file it tries > (/usr/local/lib/python2.0/lib-dynload/structmodule.so) actually > exists!!! > > OK, so there's code masking the ImportError in import_encodings() in > codecs.c. I disabled that (hmm, maybe this should be disabled > automatically when -v is used!). Hard to do since the setting of the verbosity flag is not available to Python code. > Now I get this traceback: > > Traceback (most recent call last): > File "/usr/local/lib/python2.0/site.py", line 146, in ? > sys.setdefaultencoding('ascii') > File "/usr/local/lib/python2.0/encodings/__init__.py", line 30, in ? > import codecs,aliases > File "/usr/local/lib/python2.0/codecs.py", line 10, in ? > import struct,types,__builtin__ > ImportError: /usr/local/lib/python2.0/lib-dynload/structmodule.so: undefined symbol: PyString_Type > > OK, I've managed to fix it by a change to the way I build Python: I'm > now linking the struct module (and everything in Setup up to and > including _codecs) statically. > > But I guess what's really missing is some kind of flag that tells the > linker to export all symbols in the libpython2.0.a file... Is there a > way? (I feel so stupid!) From man ld: -E -export-dynamic When creating an ELF file, add all symbols to the dynamic symbol table. Normally, the dynamic symbol table contains only symbols which are used by a dy namic object. This option is needed for some uses of dlopen. (Not sure whether this is what you're looking for, though.) -- Marc-Andre Lemburg ______________________________________________________________________ Business: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4