Problem building both Python 2 and 3 into Postgres 9.4.4?

Started by Paul Jonesover 10 years ago3 messagesgeneral
Jump to latest
#1Paul Jones
pbj@cmicdo.com

Has anyone successfully built Python 2 and 3 into the same installation
of Postgres 9.4.4? I tried it today on Ubuntu 10.04, Python 2.6.5,
Python 3.1.2 and got and error about undefined symbol: PyString_AsString.
The Python docs say that PyString_* have been renamed to PyBytes_*
and I find references to both under ./src/pl/plpython. Is this a bug,
something I'm doing wrong, or perhaps my system is too old?

make distclean

./configure --with-openssl --with-libxml --with-libxslt --with-python PYTHON=/us
r/bin/python

make

./configure --with-openssl --with-libxml --with-libxslt --with-python PYTHON=/us
r/bin/python3

make

make install
service postgresql restart

psql -U postgres
postgres=# create database py2;
CREATE DATABASE
postgres=# create database py3;
CREATE DATABASE
postgres=# \c py2
You are now connected to database "py2" as user "postgres".
py2=# create extension plpython2u;
CREATE EXTENSION
py2=# \c py3
You are now connected to database "py3" as user "postgres".
py3=# create extension plpython3u;
ERROR: could not load library "/usr/local/pgsql/lib/plpython3.so": /usr/local/p
gsql/lib/plpython3.so: undefined symbol: PyString_AsString

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Paul Jones (#1)
Re: Problem building both Python 2 and 3 into Postgres 9.4.4?

pbj@cmicdo.com writes:

Has anyone successfully built Python 2 and 3 into the same installation
of Postgres 9.4.4?

I do not think you can do it like this:

make distclean
./configure --with-openssl --with-libxml --with-libxslt --with-python PYTHON=/usr/bin/python
make
./configure --with-openssl --with-libxml --with-libxslt --with-python PYTHON=/usr/bin/python3
make
make install

You need to configure and make one way, then install, then make distclean,
reconfigure and remake the other way, then make install in only the
src/pl/plpython directory. The recipe as you have it will end up with
only one installed copy of plpython, not two, and I'm not real sure that
that copy will be correctly built for either case.

regards, tom lane

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#3Paul Jones
pbj@cmicdo.com
In reply to: Tom Lane (#2)
Re: Problem building both Python 2 and 3 into Postgres 9.4.4?

That worked, thank you.

The Tip in 43.1 did not explain in that much detail. I searched but could
not find that explained anywhere in the docs. Your paragraph would be
a nice enhancement to the tip.

PJ

--------------------------------------------
On Sun, 7/19/15, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Subject: Re: [GENERAL] Problem building both Python 2 and 3 into Postgres 9.4.4?
To: pbj@cmicdo.com
Cc: pgsql-general@postgresql.org
Date: Sunday, July 19, 2015, 4:54 PM

pbj@cmicdo.com
writes:

Has anyone successfully built

Python 2 and 3 into the same installation

of Postgres 9.4.4?

I do not think you can do it like this:

make distclean
./configure --with-openssl --with-libxml

--with-libxslt --with-python PYTHON=/usr/bin/python

make
./configure

--with-openssl --with-libxml --with-libxslt --with-python
PYTHON=/usr/bin/python3

make
make install

You need to configure and make one way, then
install, then make distclean,
reconfigure
and remake the other way, then make install in only the
src/pl/plpython directory.  The recipe as you
have it will end up with
only one installed
copy of plpython, not two, and I'm not real sure that
that copy will be correctly built for either
case.

           
regards, tom lane

--
Sent via pgsql-general
mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general