=?gb18030?B?UmVwbHk6IFJlcGx5OiBbR0VORVJBTF0gu9i4tKO6?= =?gb18030?B?IFtHRU5FUkFMXSBDYW4ndCBjcmVhdGUgcGxweXRo?= =?gb18030?B?b24gbGFuZ3VhZ2U=?= - Mailing list pgsql-general
From | guxiaobo1982 |
---|---|
Subject | =?gb18030?B?UmVwbHk6IFJlcGx5OiBbR0VORVJBTF0gu9i4tKO6?= =?gb18030?B?IFtHRU5FUkFMXSBDYW4ndCBjcmVhdGUgcGxweXRo?= =?gb18030?B?b24gbGFuZ3VhZ2U=?= |
Date | |
Msg-id | tencent_7D1D58DA1F1C272245D18FAF@qq.com Whole thread Raw |
Responses |
Re: Reply: Reply: [GENERAL] 回复: [GENERAL] Can't create plpython language
|
List | pgsql-general |
Problem with ActivePython-2.7.2.5 is
[postgres@lix stado]$ psql
psql (9.3beta2)
Type "help" for help.
postgres=# create language plpython2u;
ERROR: could not load library "/opt/PostgreSQL/93b2src/lib/postgresql/plpython2.so": /opt/PostgreSQL/93b2src/lib/postgresql/plpython2.so: undefined symbol: PyObject_Bytes
with environment variables as
export PGDATA=/opt/PostgreSQL/pgdata/93b2src
export PYTHONHOME=/opt/ActivePython-2.7
export PYTHONPATH=/opt/ActivePython-2.7/bin
export PATH=/opt/PostgreSQL/93b2src/bin:$PYTHONHOME/bin:$PATH
export LD_LIBRARY_PATH=$PYTHONHOME/lib:$LD_LIBRARY_PATH
------------------ Original ------------------
Sender: "Raghavendra"<raghavendra.rao@enterprisedb.com>;
Send time: Tuesday, Jul 16, 2013 4:53 PM
To: "guxiaobo1982"<guxiaobo1982@qq.com>;
Cc: "Jov"<amutu@amutu.com>; "Michael Paquier"<michael.paquier@gmail.com>; "pgsql-general"<pgsql-general@postgresql.org>; "Asif Naeem"<asif.naeem@enterprisedb.com>;
Subject: Re: Reply: [GENERAL] 回复: [GENERAL] Can't create plpython language
It works with ActivePython 3.2.2.3,
Thanks for notifying.
but not ActivePython 2.7.2.5.
No idea... :), I tried AP 3.2 with PG 9.2 & PG 9.3B it went fine for me.
------------------ Original ------------------From: "Raghavendra"<raghavendra.rao@enterprisedb.com>;Date: Jul 11, 2013To: "guxiaobo1982"<guxiaobo1982@qq.com>;Cc: "Jov"<amutu@amutu.com>; "Michael Paquier"<michael.paquier@gmail.com>; "pgsql-general"<pgsql-general@postgresql.org>; "Asif Naeem"<asif.naeem@enterprisedb.com>;Subject: Re: Reply: [GENERAL] 回复: [GENERAL] Can't create plpython languageOn Wed, Jul 10, 2013 at 7:36 AM, guxiaobo1982 <guxiaobo1982@qq.com> wrote:I am using PostgreSQL 9.3 beta 2[postgres@lix Multicorn-master]$ psqlpsql (9.3beta2)Type "help" for help.postgres=#It does not work with ActivePython3.2(ActivePython-3.2.2.3-linux-x86_64.tar.gz), Which version of PostgreSQL are you running?Sorry for being late on this email. I overlooked the version you were pointing. I didn't test on PG 9.3Beta, I did on PG 9.2 after looking your error showing PG 9.2.4[postgres@lix PostgreSQL]$ psql
Password:
psql (9.2.4)
Type "help" for help.
postgres=# create language plpython2u;
ERROR: could not access file "$libdir/plpython2": No such file or directory
postgres=# create language plpython3u;
ERROR: could not access file "$libdir/plpython3": No such file or directoryLater, I began testing it with PG 9.3beta and encountered same error message as you have shared here.Did some analysis and finally succeeded to create language plpython3u with AP-3.2, however with not many tweaks in compilation.(Steps might be arguing. Pardon me).Despite the fact that I have ActivePython-3.2 on my system, source compilation was looking for shared library. Hence compiled explicitly with shared_libpython=yes.Pre-Steps: (Assuming you have ActivePython 3.2)cd /opt/ActivePython-3.2/bin/cp python3.2-config python-configcp python3. pythonTest:export PATH=/opt/ActivePython-3.2/bin:$PATH# which python
/opt/ActivePython-3.2/bin/python
# which python-config
/opt/ActivePython-3.2/bin/python-configSteps:1. Install PG 9.3 beta with below steps:export PATH=/opt/ActivePython-3.2/bin:$PATH./configure --prefix=/usr/local/pg93b3 --with-pythonmake shared_libpython=yesmake shared_libpython=yes install2. After installation you should see below files in your PG installation Path:[root@localhost pg93b3]# pwd/usr/local/pg93b3[root@localhost pg93b3]# find . | grep python./lib/postgresql/plpython3.so./share/postgresql/extension/plpython3u--unpackaged--1.0.sql./share/postgresql/extension/plpython3u--1.0.sql./share/postgresql/extension/plpython3u.control3. Now, create new cluster using INITDB4. Before starting the cluster set the PYTHONHOME, PYTHONPATH, LD_LIBRARY_PATHexport PYTHONHOME=/opt/ActivePython-3.2/export PYTHONPATH=/opt/ActivePython-3.2/bin:$PATHexport LD_LIBRARY_PATH=/opt/ActivePython-3.2/lib:$LD_LIBRARY_PATH5. Start the cluster and create the language:/usr/local/pg93b3/bin/pg_ctl -D /usr/local/pg93b3/data/ start-bash-4.1$ psql -p 4444
psql (9.3beta1)
Type "help" for help.
postgres=# create language plpython3u;
CREATE LANGUAGEOut of my analysis on the issue, Asif Naeem from our Dev group shared his valuable thoughts to conclude this. Thanks Asif.Question still in mind, Why plpython depends on Shared Libraries (.so) ?
pgsql-general by date: