Как заставить работать mod_wsgi только с файлами .pyo (без .py)? - PullRequest
1 голос
/ 13 сентября 2011

Я пытаюсь запустить apache + mod_wsgi, и у меня есть строгое ограничение на размещение исходных файлов .py на сервере, поэтому я сначала скомпилирую их и помещу файлы .pyo на сервер.

Вот что у меня в apache conf:

LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonPath /var/wwwroot/
WSGIPythonOptimize 1
WSGIScriptAlias /home /var/wwwroot/home.pyo

Но mod_wsgi вызывает ошибку (вырезано из журнала ошибок apache):

Failed to parse WSGI script file '/var/wwwroot/home.pyo'.
Exception occurred processing WSGI script '/var/wwwroot/home.pyo'.
File "/var/wwwroot/home.pyo", line 1
      m\xf2
       ^
SyntaxError: invalid syntax

Я пытался зайти в Google, но не смог найти ответ, работает ли mod_wsgi с предварительно скомпилированным кодом Python.

Ответы [ 3 ]

1 голос
/ 13 сентября 2011

mod_wsgi не работает только с * .pyo файлами, я столкнулся с этой проблемой и пару часов бился головой о стену, пытаясь разобраться.

mod_wsgi не работает без исходного кода Python в обычном старом формате .py.

1 голос
/ 14 сентября 2011

Ответ на этот вопрос в списке mod_wsgi:

http://groups.google.com/group/modwsgi/browse_thread/thread/5da316e3480eab7f

Краткий ответ: только файл сценария WSGI должен содержать исходный код, и, как другие отметили, простоиметь соответствующие строки для настройки sys.path, если необходимо, а затем импортировать фактическую точку входа приложения WSGI из версии модуля .pyo в другом месте.

1 голос
/ 13 сентября 2011

Простой обходной путь - добавить рядом с home.pyo дополнительный файл, который просто содержит from home import *. Вы можете назвать это foo.py, вы можете назвать это home.wsgi, вы можете назвать это the-quick-brown-fox-ate-the-lazy-dog, если хотите. (Так что если у вас проблемы с расширением ".py", это не имеет значения.)

...