将flask项目部署到阿里云上运行flask run时报错AttributeError: 'NoneType' object has no attribute 'SSLContext'

Traceback (most recent call last):
File “/root/.virtualenvs/flask_blog/bin/flask”, line 8, in
sys.exit(main())
File “/root/.virtualenvs/flask_blog/lib/python3.8/site-packages/flask/cli.py”, line 966, in main
cli.main(prog_name=“python -m flask” if as_module else None)
File “/root/.virtualenvs/flask_blog/lib/python3.8/site-packages/flask/cli.py”, line 586, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File “/root/.virtualenvs/flask_blog/lib/python3.8/site-packages/click/core.py”, line 717, in main
rv = self.invoke(ctx)
File “/root/.virtualenvs/flask_blog/lib/python3.8/site-packages/click/core.py”, line 1135, in invoke
sub_ctx = cmd.make_context(cmd_name, args, parent=ctx)
File “/root/.virtualenvs/flask_blog/lib/python3.8/site-packages/click/core.py”, line 641, in make_context
self.parse_args(ctx, args)
File “/root/.virtualenvs/flask_blog/lib/python3.8/site-packages/click/core.py”, line 940, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
File “/root/.virtualenvs/flask_blog/lib/python3.8/site-packages/click/core.py”, line 1476, in handle_parse_result
value = invoke_param_callback(
File “/root/.virtualenvs/flask_blog/lib/python3.8/site-packages/click/core.py”, line 96, in invoke_param_callback
return callback(ctx, param, value)
File “/root/.virtualenvs/flask_blog/lib/python3.8/site-packages/flask/cli.py”, line 742, in _validate_key
is_context = isinstance(cert, ssl.SSLContext)
AttributeError: ‘NoneType’ object has no attribute ‘SSLContext’

Python 版本大于 2.7.8 按理说不会出现这个问题,有可能是依赖管理工具或是 Python 版本的问题。麻烦提供下面的信息:

  • OS 和版本
  • Python 发行版来源
  • Flask 版本
  • 安装 Flask 时使用的工具和版本

可以试试重装 Python、pip 和 Flask(以及其他使用的依赖管理工具)……

1 个赞

是的,Python安装的时候没有带ssl模块

试试用系统的包管理工具安装openssl-devel包(不同系统名称有差异),然后重新安装 Python

还有如果没有足够的知识不建议从源码编译Python,尽量通过系统提供的包管理器安装

1 个赞

我也偶尔会出现这个问题,重启pycharm就没事了,网上说是环境变量配置不对,但我试了,没有用。

我本地mac 安装wget时候顺带把openssl 从1.0 升级到了1.1 了。 然后flask run 时候也是上述错误。
搜了好长时间无解,还好我本地python3 是brew安装的,直接brew upgrade 从3.7.3 升级到 3.7.7
解决了这个问题。
flask 起来了,运行项目数据库模块却报错: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib

我去,我本地的libssl 库已经是1.1了。。你当然找不到。
无奈pip3 uninstall 该数据库模块,重新安装。。

好像python3.7.4 开始默认支持的openssl是1.1 老版本的不支持了。 如果无解就用最新版本的python吧。

1 个赞