2014-01-16 9 views
9

Ich habe eine Django 1.5, Python 2.7-Website unter Apache mit mod_wsgi auf einem CentOS 6.4-Server ausgeführt.Django, mod_wsgi, psycopg2 Unsachgemäß konfiguriert: Fehler beim Laden von psycopg2 Modul: Kein Modul namens _psycopg

Ich habe diese Seite mit Django 1.6 und Python 3.3 neu erstellt. Wenn ich es auf den gleichen Server setze und die Pfade in httpd.conf ändere, bekomme ich den Betrefffehler. Diese neue Installation funktioniert erwartungsgemäß mit ./manage.py runserver.

Hier sind die beiden WSGI Definitionen von httpd.conf:

WSGIScriptAlias//home/ccdgen/CCDGEN2/apache/wsgi.py 
WSGIPythonPath   /home/ccdgen/CCDGEN2/ccdgen/ccdgen:/home/ccdgen/CCDGEN2/ccdgen:/home/ccdgen/CCDGEN2/lib/python3.3/site-packages 
<Directory /home/ccdgen/CCDGEN2/ccdgen> 
    <Files wsgi.py> 
    Order allow,deny 
    Allow from all 
    </Files> 
</Directory> 

#WSGIScriptAlias /ccdgen /home/ccdgen/CCDGEN/apache/wsgi.py 
#WSGIPythonPath /home/ccdgen/CCDGEN/mlhim/ccdgen:/home/ccdgen/CCDGEN/mlhim:/home/ccdgen/CCDGEN/lib/python2.7/site-packages 
#<Directory /home/ccdgen/CCDGEN/mlhim> 
# <Files wsgi.py> 
#  Order allow,deny 
#  Allow from all 
# </Files> 
#</Directory> 

Die wsgi.py Datei ist das gleiche auf beiden Installationen:

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mlhim.settings") 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

Irgendwelche Ideen? Offensichtliche Versehen? Dank

+0

Sudo apt -bekommen install python-psycopg2 oder was auch immer ist centos version der installation von paketen ... –

+1

Danke, aber offensichtlich habe ich es bereits installiert. Es funktioniert sowohl mit der vorherigen Seite als auch mit dem Django Dev-Server. –

Antwort

4

Das Problem war, dass mod_wsgi für Python 2.7 kompiliert wurde und für Python 3.3 neu kompiliert werden musste. Ich habe kein neues mod_wsgi irgendwo als Paket gefunden, also habe ich es neu kompiliert.

Da es sich bei Python 3 um eine alternative Installation auf CentOS 6.4 handelt, war es für configure schwierig, ein gutes Makefile zu erstellen und sogar die Option --with-python zu übergeben. Ich musste Makefile etwas bearbeiten, nachdem ich die Informationen von python3.3-config --cflags und auch von --ldflags erhalten habe.

HTH jemand in der Zukunft.

+1

Kannst du erklären, was genau du getan hast? –

+0

Es war vor über einem Jahr, so dass ich mich nicht an den Schritt für Schritt Prozess erinnere. Aber Sie müssen Python auf CentOS neu kompilieren und cflags und ldflags nachlesen, da das Makefile bearbeitet werden muss. Ich habe schließlich die DB, die CentOS/RHE benötigt, in die Cloud verschoben und bin zurück zu Ubuntu Server für meine Django-App gegangen. IMO, moderne Python auf Entwicklung und Verwendung auf CentOS ist ein Nein. –

3

Versuchen Sie diese Befehle Debian, Ubuntu

sudo apt-get install python-dev 
sudo apt-get install libpq-dev 

Für RedHat Enterprise, Fedora, CentOS

sudo yum install python-devel 
sudo yum install postgresql-libs 

Dann installieren psycopg2

pip install psycopg2 
+1

Wie oben; Es ist bereits installiert. Der Django-Dev-Server funktioniert. Außerdem funktioniert das Ausführen der ./manage.py Shell und dann das Importieren von psycopg2. Sowie: von psycopg2 import _psycopg –

+0

verwendest du Python virtualenv für den Weg in beide Richtungen oder nicht? –

+0

Ja, die vorherige Seite lief unter einem Python 2.7 virtualenv und der neue ist unter einem Python 3.3 virtualenv installiert. –

0

Wie bereits erwähnt wurde, hat mod_wsgi nicht für Python 3. Eine Option kompiliert worden ist Software Collections und/oder mit nginx gehen zu verwenden, und „Pip installieren uwsgi“, die eine Menge Kompilieren spart und kundenspezifische Pakete ausgeführt wird.