如何使用.pyo文件(没有.py)来运行mod_wsgi?

时间:2011-09-13 12:37:12

标签: python apache mod-wsgi

我正在尝试启动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

我尝试谷歌但无法找到mod_wsgi使用预编译的python代码的答案。

3 个答案:

答案 0 :(得分:1)

一个简单的解决方法是在home.pyo旁边添加一个仅包含from home import *的额外文件。您可以将其称为foo.py,您可以将其称为home.wsgi,如果您愿意,可以将其称为the-quick-brown-fox-ate-the-lazy-dog。 (因此,如果您遇到扩展名为“.py”的问题,则无关紧要。)

答案 1 :(得分:1)

mod_wsgi只对* .pyo文件不起作用,我遇到了这个问题,并且在试图找出它的时候撞了几个小时撞到了墙上。

如果没有常规旧的'.py'格式的python源代码,mod_wsgi就无法运行。

答案 2 :(得分:1)

在mod_wsgi列表中回答了这个问题:

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

简短的回答是,只有WSGI脚本文件需要是源代码,并且正如其他人所指出的那样,只需要有必要的行来设置sys.path,然后从中导入实际的WSGI应用程序入口点。 .pyo版本的模块在其他地方。