2013-07-03 5 views
0

При попытке установить modwisgi-3,4 я получаю следующее сообщение об ошибке во время make: mod_wsgi.c:142:20: error: Python.h: No such file or directory официальной страница устранения неисправностей http://code.google.com/p/modwsgi/wiki/InstallationIssues предлагает «установить пакет для разработчиков Python, соответствующего пакету выполнения Python у вас есть установлен".Невозможно установить mod_wsgi из источника

Теперь, как установить указанный пакет разработки из источника? Я запускаю python2.7.4 на linux с httpd-2.2.24 и modwisgi 3.4.

+0

Вам нужен пакет разработки python для дистрибутивов. Это компьютер Redhat (Fedora/CentOS) или Debian (Ubuntu/Mint)? – tMC

+0

Редхат основан .. –

+1

'yum install python-devel' – tMC

ответ

1

Выполните следующие действия:

$ python-config --cflags 

Это даст вам список флагов, чтобы передать компилятору найти Python.h:

$ python-config --cflags 
-I/usr/include/python3.3m -I/usr/include/python3.3m -Wno-unused-result -DDYNAMIC_ANNOTATIONS_ENABLED= 
1 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -march=x86-64 -mtune=generic -O2 -pipe -fstack-pr 
otector --param=ssp-buffer-size=4 -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ss 
p-buffer-size=4 

Вы, вероятно, также хотите запустить python-config --ldflags для необходимых флагов компоновщика.

Если у вас есть несколько версий установлен Python, вы можете указать, например, python2.7-config

Затем я вручную отредактировать файл posix-ap2X.mk.in так, что он содержит следующее:

CFLAGS = @[email protected] $(shell python-config --cflags) 
LDFLAGS = @[email protected] $(shell python-config --ldflags) 

configure.ac Autoconf файл пытается понять этот материал, но он, похоже, делает это неуклюжим способом, который, по-видимому, не работает на вас, поэтому этот ручной способ, мы надеемся, разобрался.

Редактировать: о, также, убедитесь, что вы используете правильный и что вы указываете, какой интерпретатор Python использовать по мере необходимости. Например, если вы установили Python из источника в какое-то нестандартное расположение, в то время как другая версия установлена ​​в обычном месте, обязательно укажите это (например, используйте /path/to/my/python-config в приведенных выше изменениях и передайте аргумент PYTHON=/path/to/my/python в сценарий configure) , Фактически, просто указание правильного интерпретатора Python может привести к тому, что включенный сценарий configure выполнит свою работу правильно.

+0

Скрипт mod_wsgi configure работает для вас, вам не нужно это делать самостоятельно. –

+0

Да, я заметил, что в конце концов, когда я прочитал 'configure.ac' еще несколько, следовательно, окончательное редактирование. BTW, как я понимаю, стандартно указать местоположение интерпретатора Python через переменную PYTHON, а не через флаг '--with-python'. Кроме того, я рекомендую проверить GNU pyconfigure для некоторых удобных макросов Python Autoconf (отказ от ответственности: я поддерживаю pyconfigure, не стесняйтесь обращаться ко мне напрямую, чтобы продолжить это обсуждение, чтобы не загромождать вопрос). –

+0

Сценарии настройки Apache используют --with для указания местоположений пакетов, которые будут использоваться с Apache. Сценарий следует этому соглашению. Итак, это история того, почему это делается именно так. –

0

Вы должны использовать опцию --with-python для mod_wsgi configure, чтобы указать путь к двоичному файлу 'python', который вы установили из исходного кода. Похоже, что вы этого не сделали, и он по-прежнему использует систему Python, у которой не установлен соответствующий пакет dev. Предоставьте подробную информацию о реальной командной строке сценария configure, когда вы ее запустили, и сообщите нам, где находится ваш собственный Python. Также убедитесь, что вы запускаете «make distclean», чтобы очистить результаты любой старой сборки в случае, если это путает вещи.

+0

Привет Грэм, Я дал следующую команду для Configure: './configure prefix = custom_modwsgi_location --with-APXS = apxs_path_of_custom_apache --with-питон = custom_python_path --libdir = lib_path_prefix_used_for_apache' –

+0

питания фактический путь вы используя для --with-python. Я хочу убедиться, что вы указываете на правильную вещь. Если вы этого не сделаете, это все равно останется в системе Python. –

+0

команды конфигурации, которые я использовал: ** apache **: './configure --with-included-apr --prefix = $ MY_APPS/httpd27 --libdir = $ MY_APPS/lib27 --enable-ssl --enable -mods-shared = all --with-mpm = worker' ** modwsgi **: './configure --prefix = $ MY_APPS/modwsgi27 --with-apxs = $ MY_APPS/httpd27/bin/apxs - -with-python = $ MY_APPS/python2.7/bin/python --libdir = $ MY_APPS/lib27' –

Смежные вопросы