Système d'exploitation - Ubuntu Server 14.04 sur Azure VMapache2 se bloque mod_wsgi lors de l'importation pyodbc
Essayé avec différentes versions de python (3.6.0), 3.4.3, apache et mod_wsgi.
Pilote ODBC natif MS installé en utilisant les instructions d'ici https://gist.github.com/joecampo/6f777a659b8132b9d6fe1c3589df394c, alors que pyodbc a été installé en utilisant pip.
Pour déboguer le wsgi_module j'ai mis en place l'application django pour fonctionner en mode embarqué et:
gdb /usr/local/apache2/bin/httpd
run -X
Quand j'accéder à une fonction qui importe pyodbc, le wsgi échoue avec l'erreur suivante:
Program received signal SIGSEGV, Segmentation fault.
import_types() at src/pyodbcmodule.cpp:223
223 src/pyodbcmodule.cpp: No such file or directory.
Module Importation fonctionne très bien quand je lance l'application django de la ligne de commande:
python3 manage.py runserver
Y a-t-il une solution de contournement?
Lorsque vous exécutez localement, vous pouvez être dépendant de LD_LIBRARY_PATH' étant défini pour trouver une bibliothèque partagée. Cette variable d'environnement ne sera pas définie pour mod_wsgi et vous ne pouvez pas la définir facilement pour qu'elle soit utilisée. Qu'est-ce que '' LD_LIBRARY_PATH'' dans votre environnement local? –
J'ai essayé de 'echo $ LD_LIBRARY_PATH' ou d'exécuter' env'. Aucun n'a rien retourné. Si j'avais su ce que la bibliothèque mod_wsgi ne trouvait pas, je pourrais créer un lien logiciel dans/usr/lib. Y a-t-il un moyen de le comprendre? – Vahagn
Si l'ensemble '' LD_LIBRARY_PATH'' n'est pas défini, il est peu probable que cela soit la cause. Définissez-vous WSGIApplicationGroup% {GLOBAL} ''? Le module que vous utilisez peut ne pas fonctionner dans les sous-interpréteurs Python et se bloque. Cette directive force l'utilisation de l'interpréteur principal, ce qui ressemble davantage à ce que voient les modules lors de l'utilisation de la ligne de commande Python. Nous vous recommandons également d'utiliser le mode démon de mod_wsgi si vous ne l'utilisez pas déjà. –