Got undefined symbol: _PyUnicodeUCS2_AsDefaultEncodedString on OpenSuSE 11.1

Got undefined symbol: _PyUnicodeUCS2_AsDefaultEncodedString on OpenSuSE 11.1

Post by Alejandro » Sun, 27 Sep 2009 03:05:06


Hello I sent this e-mail to the python-help list but I'm not sure if
that list is active... so I post it again here:

I'm trying to build Python 2.6.2 from the sources downloaded from the
python official site on OpenSuSE 11.1 (32 bit). After installation the
python command line interpreter seems to run ok, but when I try to
install setuptools I get:

user@linux-ba2a:~/tmp> bash setuptools-0.6c9-py2.6.egg
--install-dir=/home/user/python/lib/python2.6/site-packages/
Traceback (most recent call last):
ile "<string>", line 1, in <module>
ile "/home/user/tmp/setuptools-0.6c9-py2.6.egg/setuptools/command/easy_install.py",
line 15, in <module>
ile "/home/user/tmp/setuptools-0.6c9-py2.6.egg/setuptools/sandbox.py",
line 1, in <module>
ImportError: /home/user/python/lib/python2.6/lib-dynload/operator.so:
undefined symbol: _PyUnicodeUCS2_AsDefaultEncodedString


To compile Python I executed:

../configure --prefix=/home/user/python
../make
../make install

The compile process seems to be ok, so I'm kind of clueless :-(

Any ideas?
 
 
 

Got undefined symbol: _PyUnicodeUCS2_AsDefaultEncodedString on OpenSuSE 11.1

Post by Mark Dicki » Sun, 27 Sep 2009 03:56:06

On Sep 25, 7:05m, Alejandro Valdez < XXXX@XXXXX.COM >


This is just a guess, but try configuring with:

../configure --enable-unicode=ucs4 --prefix=/home/user/python

On Linux, by default, a self-compiled Python uses UCS2
internally for its unicode support (with some support
for UTF16). Most Linux distributions, however, distribute
a Python that uses UCS4 (aka UTF32) instead, so it seems
possible that your setuptools egg is expecting to find a
UCS4 build.

Mark

 
 
 

Got undefined symbol: _PyUnicodeUCS2_AsDefaultEncodedString on OpenSuSE 11.1

Post by Mark Dicki » Sun, 27 Sep 2009 04:57:32


Also, make sure that setuptools is picking up the right python2.6
executable: you want it to be using the one in /home/user/python/bin,
not the one in /usr/bin (or where-ever SuSE keeps its python).
What does 'which python2.6' give on your system, after the python
install
but before the setuptools install?

It may be necessary to set the PYTHONPATH environment variable too;
I'm not sure about this.

I admit I don't really understand how you could be getting an
undefined _PyUnicodeUCS2* symbol; undefined _PyUnicodeUCS4* would
make more sense.

Mark
 
 
 

Got undefined symbol: _PyUnicodeUCS2_AsDefaultEncodedString on OpenSuSE 11.1

Post by Alejandro » Sun, 27 Sep 2009 06:13:49

Hello Mark, thank you a lot for your hints, I compiled python using
the --enable-unicode=ucs4 parameter in configure and I could
successfully install setuptools (Anyway I'm a little suspicious about
my compiled binaries...).

You are right about the environment variables, I have set PYTHONPATH
and PYTHONHOME to:
PYTHONPATH=$HOME/python/lib/python2.6/site-packages
PYTHONHOME=$HOME/python

The compiler issued some warnings, two of them (related to Unicode)
called my attention:

In file included from Python/formatter_unicode.c:13:
Python/../Objects/stringlib/formatter.h: In function
nknown_presentation_type
Python/../Objects/stringlib/formatter.h:35: warning: format c expects type nt but argument 3 has type y_UNICODE
Should I ignore them?




Other warning messages:

libpython2.6.a(posixmodule.o): In function `posix_tmpnam':
/home/mailstat/Python-2.6.2/./Modules/posixmodule.c:7129: warning: the
use of `tmpnam_r' is dangerous, better use `mkstemp'
libpython2.6.a(posixmodule.o): In function `posix_tempnam':
/home/mailstat/Python-2.6.2/./Modules/posixmodule.c:7084: warning: the
use of `tempnam' is dangerous, better use `mkstemp'
/home/mailstat/Python-2.6.2/Modules/_struct.c:187: warning:
et_ulongdefined but not used
/home/mailstat/Python-2.6.2/Modules/_cursesmodule.c: In function
yCurses_getsyx
/home/mailstat/Python-2.6.2/Modules/_cursesmodule.c:1766: warning:
may be used uninitialized in this function
/home/mailstat/Python-2.6.2/Modules/_cursesmodule.c:1766: warning:
may be used uninitialized in this function


> On Sep 25, 7:05m, Alejandr< Valdez
>>>rote:
>> Hello I sent this e-mail to the python-help list but I'm not >>re if
>> that list is active... so I post it agai>>he>>:
>>
>> I'm trying to build Python 2.6.2 from the sources downloaded f>>m the
>> python official site on OpenSuSE 11.1 (32 bit). After installat>>n the
>> python command line interpreter seems to run ok, but when I>>ry to
>> install setuptools>> get:
>>>[...]
>> To compile Python I ex>>ut>>:
>>
>> ./configure --prefix=/home/user>>ython
>>>>/make
>> ./make >>st>>l
>>
>> The compile process seems to be ok, so I'm kind of cluel>>s >>(
>>
>> Any>id>as?
>
> This is just a guess, but try configurin> w>th:
>
> ./configure --enable-unicode=ucs4 --prefix=/home/user>py>hon
>
> On Linux, by default, a self-compiled Python us>s UCS2
> internally for its unicode support (with some >upport
> for UTF16). ost Linux distributions, however, dis>ribute
> a Python that uses UCS4 (aka UTF32) instead, so i> seems
> possible that your setuptools egg is expecting to>find a
> UCS4>bu>ld.
> >> Mar>
> --
> http://www.yqcomputer.com/ ;n-list
 
 
 

Got undefined symbol: _PyUnicodeUCS2_AsDefaultEncodedString on OpenSuSE 11.1

Post by Mark Dicki » Mon, 28 Sep 2009 16:38:43

On Sep 25, 10:13m, Alejandro Valdez < XXXX@XXXXX.COM >


> expects type nt but argument 3 has type y_UNICODE
I only see one warning here, not two. But it should definitely
be fixed>
> >
> Should I ignore th>m?> >
> Other warning messag>s:
> [...]

I *think* all of these warnings are benign, though the source should
really be corrected if necessary to silence them (some of them, like
the _struct.c one, have already been fixed in svn). I'll take a
closer
look at them, though. Thanks for reporting these!

Mark