2013-11-16 2 views
1

Я пытаюсь установить mod_python, но я получил ошибку:со смертельным исходом: Не репозиторий при установке mod_python

SyntaxError: ('EOL while scanning string literal', ('/usr/local/lib/python2.7/dist-packages/mod_python/version.py', 3, 79, 'version = "fatal: Not a git repository (or any of the parent directories): .git\n')) 

Это файл version.sh используется в mod_python.

#!/bin/sh 

MPV_PATH="`dirname $0`/../src/include/mp_version.h" 

MAJ=`awk '/MP_VERSION_MAJOR/ {print $3}' $MPV_PATH` 
MIN=`awk '/MP_VERSION_MINOR/ {print $3}' $MPV_PATH` 
PCH=`awk '/MP_VERSION_PATCH/ {print $3}' $MPV_PATH` 
GIT=`git describe --always` 

echo $MAJ.$MIN.$PCH-$GIT 

Я запустить его вручную, то я получил:

fatal: Not a git repository (or any of the parent directories): .git 
3.4.1- 

Что это значит? Прошу помочь!

Спасибо!

ответ

7

Файл version.sh Предполагается, что вы устанавливаете устройство git. Это похоже на ошибку.

Чтобы исправить это, вы можете удалить строку

GIT=`git describe --always` 

и измените следующую строку в

echo $MAJ.$MIN.$PCH 
+0

Вы меня спасите! благодаря! – Juneyee

+0

Это не 'echo $ MAJ. $ MIN. $ PCH', а' echo $ MAJ. $ MIN. $ PCH-'иначе вы получите ошибку, например,' 'плохая версия, ожидающая 3.5.0-' " –

1

Я использую эту команду оболочки, чтобы залатать Makefile * файлы и файл version.sh в корневом исходном дереве перед выполнением ./configure ...:

sed \ 
    -e 's/(git describe --always)/(git describe --always 2>\/dev\/null)/g' \ 
    -e 's/`git describe --always`/`git describe --always 2>\/dev\/null`/g' \ 
    -i $(find . -type f -name Makefile\* -o -name version.sh) 
0

У меня был такой же симптом, но в слегка отличном состоянии окружающей среды. Это было на Gentoo linux (хотя в 2017 году и не делало больших системных обновлений за 1-2 года из-за фундаментальных изменений в Gentoo, в которые я не был готов инвестировать). Проводка здесь, если это помогает кому-то с той же фундаментальной проблемой (так как мне потребовалось 3 часа, чтобы решить проблему).

Я установил mod_python (используя emerge), перезапустил службу Apache и добавил тестовую страницу python и перешел к ней в веб-браузере. Вот что я получил на веб-странице:

Internal Server Error 

The server encountered an internal error or misconfiguration and was unable to complete your request. 

Please contact the server administrator, ... and inform them of the time the error occurred, and anything you might have done that may have caused the error. 

More information about this error may be available in the server error log. 
Apache/2.2.31 (Gentoo) DAV/2 mod_ssl/2.2.31 OpenSSL/1.0.2j mod_python/3.5.0- Python/2.7.5 SVN/1.8.14 PHP/5.5.16-pl0-gentoo Server at localhost Port 80 

Вот что я нашел в журнале ошибок Apache после установки mod_python и пытается проверить его:

[Wed Feb 22 11:34:05 2017] [notice] mod_python: Creating 8 session mutexes based on 10 max processes and 1 max threads. 
[Wed Feb 22 11:34:05 2017] [notice] mod_python: using mutex_directory /tmp 
[Wed Feb 22 11:34:05 2017] [notice] Apache/2.2.31 (Unix) DAV/2 mod_ssl/2.2.31 OpenSSL/1.0.2j mod_python/3.5.0- Python/2.7.5 SVN/1.8.14 PHP/5.5.16-pl0-gentoo configured -- resuming normal operations 
[Wed Feb 22 11:34:21 2017] [error] make_obcallback: could not import mod_python.apache.\n 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/site-packages/mod_python/__init__.py", line 25, in <module> 
    from . import version 
    File "/usr/lib/python2.7/site-packages/mod_python/version.py", line 3 
    version = "fatal: Not a git repository (or any parent up to mount point /var) 
                       ^
SyntaxError: EOL while scanning string literal 
[Wed Feb 22 11:34:21 2017] [error] make_obcallback: Python path being used "['/usr/lib/python2.7/site-packages/Genshi-0.7-py2.7-linux-i686.egg', '/usr/lib/python2.7/site-packages/Trac-1.2-py2.7.egg', '/usr/lib/python27.zip', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/gst-0.10', '/usr/lib/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages/wx-2.8-gtk2-unicode']". 
[Wed Feb 22 11:34:21 2017] [error] get_interpreter: no interpreter callback found. 

Итак, основываясь на пути к питона файлов, которые он звала (экс «/usr/lib/python2.7/site-packages/mod_python/ INIT .py».) Я мог бы, по крайней мере подтвердить, что куча вещей правильно работает:

  1. Apache правильно запускал mod_python для каждой конфигурации.
  2. mod_python был фактически запущен.
  3. Использовалась правильная версия Python (2,7 в моем случае).
  4. Файлы в пакете mod_python были найдены.
  5. Файлы на Python фактически выполнялись.

Я отмечаю эти элементы, потому что между ограниченным и не полностью описательным сообщением (по крайней мере, новичкам) многое остается для размышления или сборки.

я, наконец, посмотрел на фактический исходный код Python для файлов в TraceBack

Глядя на реальный код в TraceBack (начиная с инициализации .py) Я вижу это закончилось version = "fatal: Not a git repository ...". Глядя на этот файл (version.py) вместе со случайной запиской с какого-то веб-сайта, я думаю, проблема в том, что скрипт, который генерирует version.py («setup.py» в соответствии с заголовком внутри версии.py), предположил, что он запущен от клона Git и сообщила о какой-то фатальной ошибке, когда это было не так. Сценарий слепо сообщение об ошибке PLUS версии в переменной версии:

version = "fatal: Not a git repository (or any parent up to mount point /var) 
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). 
3.5.0-" 

Так все, что я должен был сделать, это установить эту переменную в допустимое значение:

version = "3.5.0-" 

(Примечание: Если вы заботитесь , версия mod_python, по-видимому, находится в конце исходной строки.)

Перезаписанные Apache и Python отлично работали на моей тестовой веб-странице.

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