Python3.7 scrapy遇到async和ModuleNotFoundError: No module named 'win32api'报错的解决方案
一、运行环境
Windows 命令行下
Python 3.7.0
Scrapy 1.5.0
在测试嵩天老师的第一个scrapy实战,执行scrapy crawl demo命令时,接连出现的两个bug。
二、解决Python3.7 scrapy的async报错
错误提示如下:
仔细看,发现错误提示是async出问题了。原因是python3.7中把async作为了关键字,所以无法再作为变量名,但是scrapy1.5中write函数把它作为了变量,所以报错。
**解决方案:**将提示目录下的manhole.py文件里面的async全部替换为async1即可。
我这个就是打开“d:\myprogram\python3.7\lib\site-packages\twisted\conch\”路径,找到manhole.py文件,打开用文本编辑器(不要直接双击,我用的python自带的IDLE打开的)manhole.py文件,按Ctrl+H将里面的async全部替换为async1.如下:
三、Python3.7 scrapy遇到ModuleNotFoundError: No module named 'win32api’报错
解决了async报错后,继续运行,又发生“ModuleNotFoundError: No module named 'win32api”错误。
看提示信息,提示我们这个win32api模块没有安装。
解决方案:安装win32api模块即可
下载地址
下载好之后,进入下载文件的路径,在路径栏输入cmd,自动切换到相应的命令行模式。
我的是下载在桌面,所以路径是桌面。
在命令行下输入以下安装指令:
pip install pypiwin32-223-py3-none-any.whl
即可安装成功。
再执行scrapy crawl demo命令,成功。
四、参考资料
参考一:Python3.7 scrapy遇到async报错
参考二:ModuleNotFoundError: No module named ‘win32api’