Назад | Перейти на главную страницу

мод wsgi забирает неверный libpython2.7.so.1.0

Я скомпилировал python 2.7.8 с:

mkdir -p /usr/local/python2p7/lib
./configure --prefix=/usr/local/python2p7 --with-threads --enable-shared LDFLAGS="-Wl,-rpath /usr/local/python2p7/lib"
make
make install altinstall

Я использую LDFLAGS, поэтому эта установка не конфликтует с CentOS 7, встроенным в python 2.7.5.

Компилирую modwsgi 4.2.6:

./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/python2p7/bin/python LDFLAGS="-L/usr/local/python2p7/lib"
 make
 make install

Если я бегу:

ldd /usr/local/apache/modules/mod_wsgi.so

я получил

...
libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f648d9a0000)
...

Как заставить мод wsgi использовать /usr/local/python2p7/lib/libpython2.7.so.1.0?

*******Решение*******

С помощью Грэма Дамплтона:

Чтобы скомпилировать modwsgi:

export LD_RUN_PATH=/usr/local/python2p7/lib
./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/python2p7/bin/python
make
make install
unset LD_RUN_PATH

В наборе конфигурации apache

WSGIPythonHome /usr/local/python2p7

Я изначально установил его в «/ usr / local / python2p7 / bin» и получил ошибку «ImportError: Нет модуля с именем сайта».

Это описано в документации mod_wsgi. Видеть:

Вам нужно будет установить переменную среды LD_RUN_PATH в соответствующий каталог библиотеки при компиляции mod_wsgi, чтобы убедиться, что он использует правильную разделяемую библиотеку Python.

Читайте также:

в случае, если во время выполнения он все еще выбирает неправильные файлы времени выполнения. В этом случае вам также необходимо установить WSGIPythonHome.

Что касается компиляции из исходного кода, другая причина заключается в том, что CentOS по-прежнему поставляет старый mod_wsgi.

Вы можете даже подумать об использовании устанавливаемого pip mod_wsgi вместо того, что вы делаете сейчас. Видеть: