(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!). 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!) --Guido van Rossum (home page: http://dinsdale.python.org/~guido/)
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