代码之家  ›  专栏  ›  技术社区  ›  gin93r

Windows上带有mod_wsgi的Python 3.6烧瓶:没有名为queue的模块

  •  0
  • gin93r  · 技术社区  · 7 年前

    我当时正在使用Flask/Python RESTful api,一切都很好,直到我开始尝试学习如何为其提供服务。当然我在当地试过了。

    我安装了AMPPS,因为它附带了python和mod_wsgi,默认情况下已安装并启用。我经历了所有的设置,我能够得到默认的“你好,世界!”工作申请。胡萨!正当

    然后我试着开始引入我的应用程序,这就是我遇到障碍的地方。

    起初,我得到一个错误,即没有名为flask的模块。经过一番阅读,我了解到我需要像这样加载我的virtualenv:

    activate_this = 'path/to/venv/Scripts/activate_this.py'
    with open(activate_this) as file_:
        exec(file_.read(), dict(__file__=activate_this))
    

    这似乎适用于烧瓶,但后来我得到:

    ModuleNotFoundError: No module named 'queue'

    我浏览过互联网,读过“queue”和“queue”的比较,但我并没有直接导入它。

    activate_this = 'path/to/venv/Scripts/activate_this.py'
    with open(activate_this) as file_:
        exec(file_.read(), dict(__file__=activate_this))
    
    # this line is what causes the error
    from flask import Flask
    
    def application(environ, start_response):
        status = '200 OK'
        output = b'Hello World!'
        response_headers = [('Content-type', 'text/plain'),('Content-Length', str(len(output)))]
        start_response(status, response_headers)
        return [output]
    

    任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Graham Dumpleton    7 年前

    您的mod_wsgi实际上是为Python 2.7而不是3.6编译的。错误是因为 Queue queue 在3.6中,因此在导入时 根据2.7,它将失败。

    如果为Python 3.6编译,则需要卸载mod_wsgi并安装的版本。您不能通过将为一个Python版本编译的mod_wsgi版本指向不同版本的Python虚拟环境来强制其作为不同版本运行。这是因为mod_wsgi直接链接到特定版本的Python库。