Использование Mod_wsgi с библиотекой Python Anaconda

У меня есть опция установки mod_wsgi --with-python. Когда я запускаю приложение flask на apache, оно говорит: «Нет имени модуля flask». Flask уже установлен в anaconda. Как я могу заставить mod_wsgi забрать библиотеки анаконды.


person Sidharth    schedule 20.10.2016    source источник
comment
Это системная версия Python, та же версия, что и версия Anaconda? Например. если Anaconda Python 2.7, есть ли нормальный системный Python версии 2.7. Что вы получаете за import sys; sys.prefix в версии Anaconda Python? Установлен ли Flask в виртуальной среде, созданной для Anaconda Python, или в основной установке Anaconda?   -  person Graham Dumpleton    schedule 20.10.2016
comment
sys.prefix display /home/jdnco/anaconda2. Да, есть системный python версии 2.7, и прямо сейчас mod_wsgi использует его, я хочу, чтобы mod_wsgi использовал anaconda python.   -  person Sidharth    schedule 20.10.2016
comment
Я добавил этот WSGIPythonHome /home/jdnco/anaconda2 в httpd.conf, он отображает ошибку «Нет сайта модуля», и если я удалю этот путь, он показывает «Нет имени модуля». -vdso.so.1 => (0x00007fff219fa000) libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007fb7115ba000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb71139e000 )   -  person Sidharth    schedule 20.10.2016


Ответы (1)


Вероятно, вам нужно сделать следующее.

Когда вы собираете mod_wsgi из исходного кода, установите для переменной среды LD_RUN_PATH значение /home/jdnco/anaconda2/lib. Таким образом, вернитесь и сделайте что-то вроде следующего в исходном коде mod_wsgi:

make distclean
./configure --with-python=/home/jdnco/anaconda2/bin/python
LD_RUN_PATH=/home/jdnco/anaconda2/lib make
sudo make install

Это обеспечит связь с правильной библиотекой. Свяжитесь с ldd еще раз.

Затем в файле конфигурации Apache также установите:

WSGIPythonHome /home/jdnco/anaconda2

Оба они необходимы при использовании установки Python в нестандартном месте, которое соответствует версии в системных каталогах.

person Graham Dumpleton    schedule 20.10.2016
comment
Спасибо за ответ, я попробую это и вернусь к вам. - person Sidharth; 21.10.2016
comment
Хорошо, я сделал вышеуказанные шаги, теперь, выполняя ldd, он показывает путь /home/user/anaconda2. Так что до сих пор все хорошо, но теперь, когда я получаю доступ к приложению, он показывает ошибку «Нет имени модуля». Есть комментарии по этому поводу? - person Sidharth; 21.10.2016
comment
Вы имеете в виду, что ldd показывает, что он находит libpython2.7.so в /home/jdnco/anaconda2/lib? Какая это версия Anaconda Python? Anaconda Python на протяжении многих лет вызывала всевозможные проблемы. Не так давно в mod_wsgi было еще одно исправление, связанное с этим, поэтому убедитесь, что вы используете самый последний исходный код mod_wsgi. - person Graham Dumpleton; 21.10.2016
comment
ldd /etc/httpd/modules/mod_wsgi.so linux-vdso.so.1 =› (0x00007ffc0592b000) libpython2.7.so.1.0 =› /home/jdnco/anaconda2/lib/libpython2.7.so.1.0 (0x00007f008443f000 ) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0084211000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f008400d000) libutil.so.1 => /lib64/libutil.so .1 (0x00007f0083e0a000) libm.so.6 => /lib64/libm.so.6 (0x00007f0083b07000) libc.so.6 => /lib64/libc.so.6 (0x00007f0083745000) /lib64/ld-linux-x86- 64.so.2 (0x00007f0084a73000) - person Sidharth; 21.10.2016
comment
python Python 2.7.12 | Anaconda 4.1.1 (64-разрядная версия) | (по умолчанию, 2 июля 2016 г., 17:42:40) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] в linux2 Для получения дополнительной информации введите помощь, авторские права, кредиты или лицензию. Anaconda предоставлена ​​вам компанией Continuum Analytics. Пожалуйста, проверьте: continuum.io/thanks и anaconda.org ››› import sys ››› sys.prefix '/home/jdnco/anaconda2' Версия Mod_wsgi -- mod-4.5.7. Когда я не устанавливаю WSGIPythonHome в httpd.conf, он говорит, что фляга имени модуля отсутствует, но фляга уже установлена ​​в анаконде, и когда я устанавливаю WSGIPythonHome, он говорит, что имя модуля отсутствует. - person Sidharth; 21.10.2016
comment
Это связано с разрешением для /home/user/anaconda2, но не отображается ошибка, связанная с разрешением? - person Sidharth; 21.10.2016
comment
Пока игнорируйте текущий Apache/mod_wsgi. Попробуйте установить mod_wsgi-express, как описано в pypi.python.org/pypi/mod_wsgi. Посмотрите, не произойдет ли сбой при запуске mod_wsgi-express после его установки в вашу установку Anaconda Python. - person Graham Dumpleton; 21.10.2016
comment
хорошо. я пытаюсь сказать, что не могу запустить apache от имени пользователя root. У вас есть идентификатор gmail? - person Sidharth; 21.10.2016
comment
Хорошо, когда я запускаю его от другого пользователя, он работает. Я перехожу на страницу localhost: 8000, и он показывает изображение змеи. Но как я могу узнать, что он установлен в anaconda python или системном python. Я просто запускаю команду python setup.py без указания пути к python, так куда она идет? - person Sidharth; 21.10.2016
comment
Обновлено... Я запускаю свой файл .wsgi, используя стартовый сервер mod_wsgi-express .wsgi, и моя фляга работает по URL-адресу localhost:8000, но я хочу запустить его на сервере apache. Я останавливаю службу apache, она все еще работает. Итак, что мне нужно сделать сейчас. Я хочу, чтобы мои приложения drupal и python запускались на сервере apache. - person Sidharth; 21.10.2016
comment
Тот факт, что mod_wsgi-express работает, показывает, что ваш основной Apache также должен работать, поскольку все, что делает mod_wsgi-express, — это запускает Apache, но со сгенерированной конфигурацией и mod_wsgi.so, созданным pip install mod_wsgi. Теперь пора спать. - person Graham Dumpleton; 21.10.2016
comment
Спасибо за вашу помощь. Я просто хочу запустить приложение wsgi при запуске apache. Я где-то читал ваш пост, я также могу настроить сервер в mod-wsgi express, а затем запуск и остановка apache будет включать / выключать приложение. Спасибо за ваше техподдержка, попробую разобраться - person Sidharth; 21.10.2016