У меня есть опция установки mod_wsgi --with-python. Когда я запускаю приложение flask на apache, оно говорит: «Нет имени модуля flask». Flask уже установлен в anaconda. Как я могу заставить mod_wsgi забрать библиотеки анаконды.
Использование Mod_wsgi с библиотекой Python Anaconda
Ответы (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
Спасибо за ответ, я попробую это и вернусь к вам.
- person Sidharth; 21.10.2016
Хорошо, я сделал вышеуказанные шаги, теперь, выполняя ldd, он показывает путь /home/user/anaconda2. Так что до сих пор все хорошо, но теперь, когда я получаю доступ к приложению, он показывает ошибку «Нет имени модуля». Есть комментарии по этому поводу?
- person Sidharth; 21.10.2016
Вы имеете в виду, что
ldd
показывает, что он находит libpython2.7.so
в /home/jdnco/anaconda2/lib
? Какая это версия Anaconda Python? Anaconda Python на протяжении многих лет вызывала всевозможные проблемы. Не так давно в mod_wsgi было еще одно исправление, связанное с этим, поэтому убедитесь, что вы используете самый последний исходный код mod_wsgi.
- person Graham Dumpleton; 21.10.2016
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
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
Это связано с разрешением для /home/user/anaconda2, но не отображается ошибка, связанная с разрешением?
- person Sidharth; 21.10.2016
Пока игнорируйте текущий Apache/mod_wsgi. Попробуйте установить mod_wsgi-express, как описано в pypi.python.org/pypi/mod_wsgi. Посмотрите, не произойдет ли сбой при запуске mod_wsgi-express после его установки в вашу установку Anaconda Python.
- person Graham Dumpleton; 21.10.2016
хорошо. я пытаюсь сказать, что не могу запустить apache от имени пользователя root. У вас есть идентификатор gmail?
- person Sidharth; 21.10.2016
Хорошо, когда я запускаю его от другого пользователя, он работает. Я перехожу на страницу localhost: 8000, и он показывает изображение змеи. Но как я могу узнать, что он установлен в anaconda python или системном python. Я просто запускаю команду python setup.py без указания пути к python, так куда она идет?
- person Sidharth; 21.10.2016
Обновлено... Я запускаю свой файл .wsgi, используя стартовый сервер mod_wsgi-express .wsgi, и моя фляга работает по URL-адресу localhost:8000, но я хочу запустить его на сервере apache. Я останавливаю службу apache, она все еще работает. Итак, что мне нужно сделать сейчас. Я хочу, чтобы мои приложения drupal и python запускались на сервере apache.
- person Sidharth; 21.10.2016
Тот факт, что mod_wsgi-express работает, показывает, что ваш основной Apache также должен работать, поскольку все, что делает mod_wsgi-express, — это запускает Apache, но со сгенерированной конфигурацией и mod_wsgi.so, созданным pip install mod_wsgi. Теперь пора спать.
- person Graham Dumpleton; 21.10.2016
Спасибо за вашу помощь. Я просто хочу запустить приложение wsgi при запуске apache. Я где-то читал ваш пост, я также могу настроить сервер в mod-wsgi express, а затем запуск и остановка apache будет включать / выключать приложение. Спасибо за ваше техподдержка, попробую разобраться
- person Sidharth; 21.10.2016
import sys; sys.prefix
в версии Anaconda Python? Установлен ли Flask в виртуальной среде, созданной для Anaconda Python, или в основной установке Anaconda? - person Graham Dumpleton   schedule 20.10.2016