Python 3.7 下 Twisted兼容问题

Python 3.7 下 Twisted兼容问题

问题描述

最近学Scrapy,想着用最新的python版本赶个时髦,毕竟官网发布的版本显示是支持了py37的,然鹅,没想到我还是太年轻,就算scrapy支持了,但是twisted还是凉着的,于是在运行官网tutorial的时候,有了下面的错误:

File "D:\Python37\lib\site-packages\scrapy\extensions\telnet.py", line 12, in <module>
    from twisted.conch import manhole, telnet
File "D:\Python37\lib\site-packages\twisted\conch\manhole.py", line 154
    def write(self, data, async=False):
                              ^
SyntaxError: invalid syntax

问题解决

在上面的报错中,可以看到,错误来源很是奇怪,报的是语法错误,辛亏我早先有看过py37的新特性,早先在py35发行时就提出的PEP 492提案,终于在py37中正式生效(以前的版本中也有,但是得from __future__ import generator_stop)。在这个提案中,有一条就是:将协程的概念从生成器中拎了出来,并添加了新的关键词async\await。到这里终于明白了,错误就来自这:asyncpy37的关键词,不能作为关键字参数。修改方法也很简单,把Python37\lib\site-packages\twisted\conch\manhole.py中全部的async修改为其他非py37关键词的名称。

问题解决,放烟花。

补充

在最近刚发行的18.9版本中已经修复了这个问题

你可能感兴趣的:(Python)