2016-04-13 2 views
1

Я хотел бы интегрировать HTSQL на апач сервер, используя mod_wsgi. Оба apache и mod_wsgi были успешно настроены, hello world python script выполняется и работает!Брус установить соединение: HTSQL через mod_wsgi (файл не найден)

Однако, когда я пытаюсь запустить HTSQL питон скрипт (названный htsql_wsgi.py и используя следующие инструкции: http://htsql.org/doc/admin/deploy.html), я получаю ошибку внутреннего сервера 500. Можете ли вы предложить мне решение?

Apache журнал ошибок показывает:

[Wed Apr 13 16:26:29 2016] [error] [client 127.0.0.1] mod_wsgi (pid=5760): Target WSGI script 'C:/MAMP/scripts/htsql_wsgi.py' cannot be loaded as Python module. 
[Wed Apr 13 16:26:29 2016] [error] [client 127.0.0.1] mod_wsgi (pid=5760): Exception occurred processing WSGI script 'C:/MAMP/scripts/htsql_wsgi.py'. 
[Wed Apr 13 16:26:29 2016] [error] [client 127.0.0.1] Traceback (most recent call last): 
[Wed Apr 13 16:26:29 2016] [error] [client 127.0.0.1] File "C:/MAMP/scripts/htsql_wsgi.py", line 8, in <module> 
[Wed Apr 13 16:26:29 2016] [error] [client 127.0.0.1]  application = HTSQL(DB) 
[Wed Apr 13 16:26:29 2016] [error] [client 127.0.0.1] File "C:\\MAMP\\bin\\python\\lib\\site-packages\\htsql\\core\\application.py", line 186, in __init__ 
[Wed Apr 13 16:26:29 2016] [error] [client 127.0.0.1]  % (addon.name, exc)) 
[Wed Apr 13 16:26:29 2016] [error] [client 127.0.0.1] ImportError: failed to initialize 'htsql': failed to establish database connection: file does not exist: htsql_demo.sqlite 

Вещи, которые я уже пробовал:

  1. ошибка Репликация работает непосредственно на Linux (в настоящее время работает над MAMP)

  2. Успешно выполнить скрипт напрямую через python (оба cmd и терминал xUbuntu) в том же файле (htsql_demo.sqlite), размещенном на одном сервере .

  3. Play с разрешениями (набор 777 в папку, содержащую htsql_demo.sqlite)
  4. Play с разрешениями на httpd.conf (изменение параметров с помощью каталогов, файлов, месторасположении)

Проблема возникает с использованием MAMP (Windows, 7, Apache 2.2., Python 2.7.) Или xUbuntu (Apache 2.4., Python 2.7.). На обеих машинах ошибка одинакова.

Большое спасибо за ваши предложения

+0

Как называется путь, который вы используете для файла базы данных? Вы не должны использовать относительное имя пути, поскольку текущий рабочий каталог процесса не будет там, где находится ваш код. –

+0

Пробовал несколько разных путей, таких как sqlite: /// C: \ MAMP \ Scripts \ htsql_demo.sqlite; SQLite: C: \ MAMP \ Scripts \ htsql_demo.sqlite; SQLite: // C: /MAMP/Scripts/htsql_demo.sqlite; и т. д. и т. д. ... Знаете ли вы, что должно быть правильным? – Dfinzgar

+0

Попробуйте использовать «sqlite: /// C: /MAMP/Scripts/htsql_demo.sqlite». Не используйте обратную косую черту в строках в Python для путей в Windows, поскольку обратная косая черта будет интерпретироваться как экранирование следующего символа. –

ответ

0

Проблема была с определением абсолютного пути. Вместо «:» следует использовать «% 3A» поэтому правильный путь будет:

'sqlite:///C%3A/MAMP/Scripts/htsql_demo.sqlite' 
+0

У вас есть два ':' но замените один! 'import urllib; s = 'sqlite: /// C:/MAMP/Scripts/htsql_demo.sqlite'', вывод - 'print urllib.цитата (ы) '' sqlite% 3A /// C% 3A/MAMP/Scripts/htsql_demo.sqlite'. Этот ответ только исправляет проблему для вас. – dsgdfg