【问题标题】:python - ImportError: cannot import name wsgiserverpython - ImportError:无法导入名称 wsgiserver
【发布时间】:2020-04-09 20:57:51
【问题描述】:

运行 web 的 python 脚本时出现以下错误

    Traceback (most recent call last):
      File "SampleWSTest.py", line 10, in <module>
        from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter
      File "C:\Python27\lib\site-packages\web\wsgiserver\ssl_builtin.py", line 14, in <module>
        from cherrypy import wsgiserver
    ImportError: cannot import name wsgiserver

在 python 2.7.15 上运行

import web
import sys
import argparse
import traceback
from web.wsgiserver import CherryPyWSGIServer
from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter
from OpenSSL import SSL

class Healthcheck:
    def GET(self):
        return 'Yassssssssss !!!!!'

URLS = ('/svc/healthcheck', 'Healthcheck')

CherryPyWSGIServer.ssl_certificate = 'alice.crt'
CherryPyWSGIServer.ssl_private_key = 'alice.key'

if __name__ == '__main__':
    CherryPyWSGIServer.ssl_adapter = BuiltinSSLAdapter(CherryPyWSGIServer.ssl_certificate, CherryPyWSGIServer.ssl_private_key)
    CherryPyWSGIServer.ssl_adapter.context = SSL.Context(SSL.SSLv23_METHOD)
    CherryPyWSGIServer.ssl_adapter.context.set_options(SSL.OP_NO_SSLv3)
    CherryPyWSGIServer.ssl_adapter.context.use_certificate_file(CherryPyWSGIServer.ssl_certificate)
    CherryPyWSGIServer.ssl_adapter.context.use_privatekey_file(CherryPyWSGIServer.ssl_private_key)
    app = web.application(URLS, globals())
    app.run()

在我们不得不禁用ssl 2ssl 3 后开始失败,因此必须添加ssl_adapter,但BuiltinSSLAdapter 导入失败。 如果有其他选择,请提出建议。基本上想禁用ssl 2ssl 3 以前我们没有from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter from OpenSSL import SSL

【问题讨论】:

  • 这个“网络”包是什么?如果你执行这个“import cherrypy; print(cherrypy)”会得到什么?
  • 它打印 - &lt;module 'cherrypy' from 'C:\Python27\lib\site-packages\cherrypy\__init__.pyc'&gt;
  • 您是否也安装了 cheroot,因为 CherryPy 将网络服务器移至 Cheroot 项目?

标签: python python-2.7 ssl cherrypy cherrypywsgiserver


【解决方案1】:

CherryPy 于 2017 年将 wsgiserver 移至 cheroot。

http://docs.cherrypy.org/en/latest/history.html#v9-0-0

所以现在你需要像这样导入它:

from cheroot.wsgi import Server as CherryPyWSGIServer

或从头到尾重命名。

【讨论】:

  • 这没有帮助 - 脚本运行但我没有得到任何响应。得到 - localhost sent an invalid response.
  • 还需要把from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter改成from web.wsgiserver.ssl.builtin import BuiltinSSLAdapter
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
  • 2014-09-27
  • 2016-12-24
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多