Error loading psycopg2 module: undefined symbol: lo_truncate64

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich versuche PostgreSQL auf uberspace.de zu nutzten...

Hab ein virtualenv mit Python 3.5 und kann in der shell psycopg2 nutzten, bsp.:

Code: Alles auswählen

$ ./manage.py shell
Python 3.5.0 (default, Oct 13 2015, 10:04:33) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import psycopg2
>>> from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
>>> import django.db.backends.postgresql_psycopg2
>>> 
Ein manage.py migrate funktioniert ebenfalls.

Aber, wenn ich einen Request per fastCGI mache, kommt das:

Code: Alles auswählen

Traceback (most recent call last):
  File "~/PyLucid_env/lib/python3.5/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 20, in 
    import psycopg2 as Database
  File "~/PyLucid_env/lib/python3.5/site-packages/psycopg2/__init__.py", line 50, in 
    from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
ImportError: ~/PyLucid_env/lib/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-x86_64-linux-gnu.so: undefined symbol: lo_truncate64
Den Fehler gibt es auch in der FAQ, hier: http://initd.org/psycopg/docs/faq.html# ... g-psycopg2

Und einen stackoverflow Eintrag gibt es ebenfalls: http://stackoverflow.com/questions/3417 ... truncate64

Das sieht für mich ok aus:

Code: Alles auswählen

$ ldd ~/PyLucid_env/lib/python3.5/site-packages/psycopg2/_psycopg.cpython-35m-x86_64-linux-gnu.so | grep libpq
	libpq.so.5 => /package/host/localhost/postgresql-9.3/lib/libpq.so.5 (0x00007faa8186b000)
$ ls -la /package/host/localhost/postgresql-9.3/lib/libpq.so
lrwxrwxrwx 1 packagesync packagesync 12 30. Jan 2014  /package/host/localhost/postgresql-9.3/lib/libpq.so -> libpq.so.5.6
Für mein Verständnis, dürfte es aber keinen Unterschied machen, ob ich auf der shell arbeite oder es über Apache/FastCGI geht...

Jemand eine Idee?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hat sich erledigt.

Das Problem: Apache gibt ein fast leeres 'env' weiter. In diesem Falle fehlt LD_LIBRARY_PATH=/package/host/localhost/postgresql-9.3/lib/
In der Shell ist es gesetzt, deswegen funktioniert damit alles normal.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten