2017-02-02 3 views
0

Ich versuche, eine Flashmaske mit mod_wsgi auf Ubuntu 16.04 zu laufen. Ich habe ein Problem beim Einstellen der Umgebungsvariablen $LD_LIBRARY_PATH$. Ich kann das in meiner ~.bashrc Datei einstellen, und dadurch bin ich in der Lage, alle meine Bibliotheken und Abhängigkeiten ohne ein Problem zu importieren. Es scheint jedoch, dass Apache diese Umgebungsvariablen zu löschen scheint.Wie man LD_LIBRARY_PATH mit Apache setzt

Der Fehler ich in meiner Protokolldatei immer ist die folgende

ImportError: libmkl_rt.so: cannot open shared object file: No such file or directory 

Es gibt zwei Python-Bibliotheken, die ich importieren bin, dass erfordern mkl. Der erste scheint sich nicht zu beklagen. Die zweite Bibliothek kann jedoch aufgrund des MKL-Fehlers nicht importiert werden.

Ich finde dieses ungerade, also habe ich die zweite Python-Bibliothek neu kompiliert, nachdem ich die Umgebungsvariable $LD_RUN_PATH auf die mkl-Pfade gesetzt habe. Es ist jedoch immer noch nicht in der Lage, mkl zu finden.

Wie konfiguriere ich Apache entsprechend? Alle anderen Importe funktionieren gut. Ich bin in der Lage, die flask-Skripte selbstständig ohne Apache laufen zu lassen, also bin ich mir ziemlich sicher, dass das ein Apache-Problem ist.

+0

Wenn Sie sicher sind Sie setzen '' LD_RUN_PATH'' richtig, wenn alle Bibliotheken oder Python-Module kompiliert, die benötigt '' libmk_rt.so'' und '' ldd Auf diesen Binärdateien wird angezeigt, dass sie korrekt gefunden wurde, ohne dass "LD_LIBRARY_PATH" gesetzt wurde. Das Problem könnte sein, dass die Bibliothek oder das Verzeichnis, in dem sie sich befindet, für den Benutzer nicht lesbar ist, auf dem Apache den Code ausführt. –

+0

Ich rannte ldd auf der Bibliothek und der mkl Bibliothekspfad zeigte sich. Was bedeutet das? – user3543300

+0

Ich erkannte tatsächlich, dass ich Importfehler auch in anderen Bibliotheken habe. Es scheint, dass Apache nicht viele andere Python-Bibliotheken finden kann. – user3543300

Antwort

1

Apache verwenden Sie standardmäßig System lib Pfad. Fügen Sie einfach den Link Ihrer so-Datei zu /usr/lib hinzu und führen Sie dann den Befehl sudo ldconfig aus. vielleicht Problem beheben

auch diesen Beitrag hilfreich sein können https://stackoverflow.com/a/23244452/6876911

+0

Wie füge ich den Link hinzu. mkl ist im Verzeichnis '/ opt' – user3543300

+0

Ich habe versucht, den Beitrag, den Sie verknüpft und den Pfad direkt hinzugefügt, aber es hat immer noch nicht funktioniert – user3543300

+0

@ user3543300' sudo ln -s '. Welche Dosis machst du genau? – sahama