使用mod_wsgi导入模块

时间:2013-10-16 12:00:46

标签: python python-2.7 apache2 mod-wsgi wampserver

我正在关注Setting up mod_wsgi on WampServer的简单教程,所有运行正常,直到我尝试导入,我尝试搜索网络,但没有得到有效的解决方案,这是一个错误问题(可能不是)或肯定是配置问题?

如何在mod_wsgi中导入模块?

设置: windows8 64 / wampserver x64 bit / mod_wsgi x64bit

目录:

  1. Wampserver:c:/ wamp
  2. wsgi app:c:/ wamp / www / wsgi
  3. Python27:c:/ python27
  4. wsgi app的别名:{通过wamp创建别名选项在教程中创建}

    WSGIScriptAlias /wsgi/ "c:/wamp/www/wsgi/wsgi.py"
    <Directory "c:/wamp/www/wsgi/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
            Order allow,deny
        Allow from all
    </Directory>
    

    wsgi.py

    from paste import httpserver
    
    try :
        p = sys.argv[1]
        command = "from %(project)s import *" % {"project": p}
        exec(command)
        httpserver.serve(app, host='127.0.0.1', port='8080')
    
    except :
        print "Usage: python runner.py <main_package>"
        sys.exit(0)
    

    Apache的错误日志:

    • 无法加载目标WSGI脚本'C:/wamp/www/wsgi/wsgi.py' Python模块。
    • 处理WSGI脚本'C:/wamp/www/wsgi/wsgi.py'时发生异常。
    • 来自粘贴导入httpserver ImportError:无法导入名称 的httpserver

    但是,如果我将上述代码更改为:

    def application(environ, start_response):
        status = '200 OK'
        output = 'Hello World!'
        response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
        return [output]
    

    打印输出。

    选项尝试了wsgi.py:

    import os, sys
    sys.path.append("c:\\wamp\\www\\wsgi\\paste\\")
    sys.path.append(os.path.dirname(__file__))
    sys.path.append('c:/wamp/www/wsgi/')
    sys.path.insert(0, 'c:/wamp/www/wsgi')
    sys.path.insert(1, 'c:/wamp/www')
    sys.path.insert(0, "c:/wamp/www/wsgi/wsgi.py")
    sys.path.insert(0, "c:/wamp/www/wsgi/paste")
    

    编辑:粘贴模块位于应用程序根目录中。

2 个答案:

答案 0 :(得分:0)

你没有提到你已经将Python激活为Apache中的有效CGI。

这有用吗?&gt; Configure Apache to use Python

答案 1 :(得分:0)

尝试删除最终斜杠:

  WSGIScriptAlias /wsgi "c:/wamp/www/wsgi/wsgi.py"

而不是:

  WSGIScriptAlias /wsgi/ "c:/wamp/www/wsgi/wsgi.py"