CentOS-Fehler mit mod_wsgi: -lpython3.2 kann nicht gefunden werden

1685
cwallenpoole

Ich habe versucht, mod_wsgi zu installieren, das für Python 3.2 auf einer CentOS-Maschine konfiguriert ist.

/ usr / bin / ld: kann -lpython3.2 nicht finden

Soweit ich das beurteilen kann, liegt dies an einem fehlenden libpython3.2.sooder gleichwertigen Element, aber ich kann nicht herausfinden, wie ich diese Datei erstellen kann.

Einige relevante Daten:

  1. Die Python-Installation ist 3.2 und wird von python.org als tar.bz2
  2. Die md5sumvon Python-3.2.tar.bz2einstimmt, die auf Python.org
  3. Dieses Problem tritt sowohl bei der Version von mod_wsgi aus dem hg-Repository als auch aus auf mod_wsgi-3.3.tar.gz

(Ich weiß, dass dies auch eine Serverfehler-Frage sein könnte, aber dies schien das intuitivere Forum zu sein).

(Ausgabe unten als Referenz)

[root@<>mod_wsgi-3.3]# ./configure PYTHON=/usr/local/bin/python3.2 checking for apxs2... no checking for apxs... /usr/sbin/apxs checking Apache version... 2.2.3 configure: creating ./config.status config.status: creating Makefile [root@<> mod_wsgi-3.3]# make ... (I will include this if requested, but it makes it easier to  read if this is removed) mod_wsgi.c:7154: warning: 'wsgi_set_py3k_warning_flag' defined but not used mod_wsgi.c:7856: warning: 'wsgi_set_user_authoritative' defined but not used mod_wsgi.c:14414: warning: 'wsgi_hook_check_user_id' defined but not used /usr/lib/apr-1/build/libtool --silent --mode=link gcc -o mod_wsgi.la -rpath /usr/lib/httpd/modules -module -avoid-version mod_wsgi.lo -L/usr/local/lib -L/usr/local/lib/python3.2/config -lpython3.2 -lpthread -ldl -lutil -lm /usr/bin/ld: cannot find -lpython3.2 collect2: ld returned 1 exit status apxs:Error: Command failed with rc=65536 . make: *** [mod_wsgi.la] Error 1 [root@<> mod_wsgi-3.3]# 
0
Können Sie die Dateien in Ihrem Posting unter `/ usr / local / lib / python3.2 / config` auflisten? John T vor 13 Jahren 0
Es scheint nicht da zu sein ... War dies eine Installationsanweisung, die ich vermisst habe? cwallenpoole vor 13 Jahren 0
Das Makefile sucht in diesem Verzeichnis nach einer Konfiguration für den Linker (`ld`). Sie können das Makefile so ändern, dass es auf Ihre Python-Installation verweist, oder Python unter dem Standardverzeichnis erneut installieren. John T vor 13 Jahren 0
Wie würde ich herausfinden, wie das geht? (Ich verwende nur ./configure --enable-shared; make; make install für die Python-Installation) cwallenpoole vor 13 Jahren 0
Was sind die eigentlichen 'configure'-Argumente, die Sie beim Erstellen von Python angegeben haben? Wenn Sie für mod_wsgi angeben möchten, wo Python installiert ist, sollten Sie die Option --with-python verwenden und beim Ausführen von configure keine PYTHON-Variable festlegen. Graham Dumpleton vor 13 Jahren 0
Ich baute Python mit `./configure --enable-shared`; "machen"; "make install" cwallenpoole vor 13 Jahren 0
Bei PYTHON = vs. --with-python = scheint es (basierend auf der Konfigurationsdatei), dass beide dasselbe erreichen. So oder so funktioniert keiner. cwallenpoole vor 13 Jahren 0

1 Antwort auf die Frage

0
Graham Dumpleton

Wenn Sie Python 3.2 mit folgendem gebaut haben:

./configure --enable-shared; make; make install 

wie Sie sagen, dann hätte sich das eigentlich unter / usr und nicht unter / usr / local installiert. Es sieht also so aus, als hätten Sie zwei Python-Installationen für 3.2 und Ihre PATH- oder PYTHON-Einstellungen bedeuten, dass Sie die unter / usr / local und nicht die, die auf / usr installiert wurde, abhängig von Ihren Konfigurationseinstellungen für Python verwenden. Finden Sie heraus, wie viele Python-Installationen Sie tatsächlich haben, wo und welche Versionen. Stellen Sie außerdem sicher, dass beim Erstellen von Quellcode für Python oder mod_wsgi Folgendes ausgeführt wird:

make distclean 

zwischen Builds, um sicherzustellen, dass Sie von vorherigen Builds einer vorherigen Konfiguration nichts mehr haben.

Beachten Sie, dass es besser ist, Ihre ursprüngliche Frage zu bearbeiten, um zusätzliche Informationen hinzuzufügen, und nicht nur in Kommentaren, an denen sie schwer zu finden sind.