Запустите скрипт CherryPy с Python2.6, а не с Python2.4 на RHEL

Работа на сервере RHEL 5. Попытка создать небольшое приложение CherryPy, которое принимает аргументы из URL (например, internet.com/cherrypy/data/22/45, вернет 22 и 45), а затем использовать его для запроса SQL Server с включенными этими аргументами. Затем возвращает это в формате JSON. Застрял на довольно большом контрольно-пропускном пункте.

RHEL 5 поставляется с Python 2.4, 2.4 не имеет встроенной обработки JSON, поэтому я установил Python26 из EPEL вместе с 2.4. Я могу запустить 2.6 с помощью команды python26, а также 2.4 с простой командой python. Я оставил 2.4, поскольку я прочитал, что yum зависит от 2.4. Затем я удалил CherryPy из 2.4 и переустановил его для 2.6. Я использую CherryPy под Apache2 с Mod_wsgi. Поэтому я предполагаю, что это может быть корнем проблемы. Я подумал, что если я добавлю шебанг (только что узнал об этом сегодня, отличное имя, хах.) В мой скрипт CherryPy, который будет интерпретировать его с 2.6, но этого не произошло, и я все еще получаю 500 ошибок, когда иду в корень приложение CherryPy (internet.com/cherrpy/). Это мой сценарий в настоящее время:

#!/usr/bin/python2.6

import sys
sys.stdout = sys.stderr

import atexit
import threading
import cherrypy

cherrypy.config.update({'environment': 'embedded'})

class Root(object):
    def index(self):
        return 'Nothing to see here. Move along.'
    index.exposed = True

    def data(self, building, ser):
        return 'You requested data for SER number: ' + ser + ' in building number: ' + building
    data.exposed = True

application = cherrypy.Application(Root(), script_name=None, config=None)

У меня установлен mod_wsgi 3.2 (mod_wsgi-3.2-1.el5.x86_64.rpm), который, я считаю, я скачал через wget и установил локально, потому что его не было в репозитории RHEL.

Это строка в моем httpd.conf, которая относится к CherryPy:

WSGIScriptAlias /cherrypy /fs1/html/data/scripts/test.py

Я не уверен, что причина в том, что в системе есть две версии python, и он не знает, с чем интерпретировать скрипт, или mod_wsgi является виновником, и мне приходится переустанавливать версию, созданную для 2.6 ( Этот и связанный вопрос предлагает это). Кто-нибудь знает наверняка, что мне делать?

Изменить. В этом руководстве по кодовой странице google mod_wsgi показано создание с аргументом для другой версии python. Должен ли я сделать это и передать аргумент "--with-python = python26"?

Edit2: пробовал сборку mod_wsgi из souce с помощью:

sudo ./configure --with-python=/usr/bin/python26

Но после запуска make меня приветствует этот мусор: http://pastebin.com/khzctxDT Это все, что я мог скопировать, попытался записать вывод в файл с помощью "sudo make > file.txt", но я получил в разрешении отказано. Я скучаю по руту...

1 ответ

Решение

Да, вам нужно пересобрать mod_wsgi для конкретной версии Python, которую вы собираетесь использовать.

Как описано в требованиях, подробно изложенных в инструкциях по установке, поставляемых с исходным кодом mod_wsgi, у вас должны быть установлены пакеты разработки для Python и Apache. Похоже, у вас не установлен пакет разработки для Python.

Итак, проверьте инструкции по установке, предоставляемые с самим mod_wsgi, а также по адресу:

http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

Другие вопросы по тегам