Python 3.7 下 Twisted相容問題
阿新 • • 發佈:2018-12-21
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
async
是py37
的關鍵詞,不能作為關鍵字引數。修改方法也很簡單,把Python37\lib\site-packages\twisted\conch\manhole.py
中全部的async
修改為其他非py37
關鍵詞的名稱。
問題解決,放煙花。
補充
在最近剛發行的18.9版本中已經修復了這個問題