2017-02-21 18 views
1

Операционная система - Ubuntu Server 14.04 на Azure VMapache2 mod_wsgi сбой при импорте pyodbc

Пробовал с разными версиями Python (3.4.3, 3.6.0), Apache и mod_wsgi.

Установленный драйвер родного ODBC MS, используя инструкции отсюда https://gist.github.com/joecampo/6f777a659b8132b9d6fe1c3589df394c, в то время как pyodbc был установлен с использованием pip.

Для отладки wsgi_module я поставил приложение Джанго для работы в интегрированном режиме и:

gdb /usr/local/apache2/bin/httpd 
run -X 

Когда я получить доступ к любой функции, которая импортирует pyodbc, то WSGI выдает следующее сообщение об ошибке:

Program received signal SIGSEGV, Segmentation fault. 
import_types() at src/pyodbcmodule.cpp:223 
223 src/pyodbcmodule.cpp: No such file or directory. 

Импорт модуль работает нормально, когда я запустить приложение Джанго из командной строки:

python3 manage.py runserver 

Есть ли обходной путь?

+0

При запуске локально вы можете зависеть от '' LD_LIBRARY_PATH'', чтобы установить общую библиотеку. Эта переменная среды не будет установлена ​​для mod_wsgi, и вы не можете легко установить ее так, чтобы она использовалась. Что такое '' LD_LIBRARY_PATH'' в вашей локальной среде? –

+0

Я попытался 'echo $ LD_LIBRARY_PATH' или запустить' env'. Никто ничего не возвращал. Если бы я знал, что библиотека mod_wsgi не может найти, я могу создать мягкую ссылку в/usr/lib. Есть ли способ понять это? – Vahagn

+0

Если у вас нет '' LD_LIBRARY_PATH'', это вряд ли будет причиной. Вы устанавливаете '' WSGIApplicationGroup% {GLOBAL} ''? Модуль, который вы используете, может просто не работать в суб-интерпретаторах Python и сбой. Эта директива вынуждает использовать основной интерпретатор, что больше похоже на то, что видят модули при использовании командной строки Python. Также рекомендуем использовать режим демонов mod_wsgi, если он еще не используется. –

ответ

0

У меня возникла такая же проблема при настройке проекта Pyramid Python, а - переход на предыдущую версию pyobbc исправил ее.

Похоже, что это может быть ошибка в pyobbc или WSGI-модуле. См. pyodbc 4.0.9+ segfault with uwsgi #199. Вы, возможно, уже известно, что эта линия является отвлекающим маневром:

223 src/pyodbcmodule.cpp: No such file or directory. 

Эта ошибка происходит из отладчика и только о том, где в import_types() исключение был поднят, однако в поисках этого файла привел меня к этой ошибки отчет о GitHub.

Вы, очевидно, уже знаете, как отлаживать Apache и wsgi, но для тех, у кого нет подробных инструкций here.

0

Это исправлено в 4.0.16 путем добавления поддержки для субинтерпретов.