难得有心情、空余时间上手 Scrapy,前一段时间看到一个很好的免费壁纸网站,想着下手爬取看看,反正还有一个 500G 的硬盘在吃灰,用于存放美图不是不可以。也是很久没接触 Scrapy,上一次使用还是上一次,先准备环境吧!
Just do it
1、在已安装 python 前提下安装 scrapy
pip install Scrapy
2、随机打开 vscode,创建一个 scrapy 项目
scrapy startproject wallpaper
3、创建 spider,一个继承自 scrapy.Spider
的类
vscode 上运行失败,不是吧!!!这也能踩坑里去
问题
明明已经‘准确无误’地执行了 pip install Scrapy
,也没有明显报错啊,可是 Scrapy 导包就是找不到,难道说我的 python 环境存在异常?
分析、排查
一开始确实懵,甚至一度怀疑是不是 vscode 的问题啊?不管三七二十一,使用 pyCharm
直接打开这个项目看看,配置 python 解释器、运行、运行成功,纳尼(ÒωÓױ)!
若反复对比两者控制台日志输出,细心的你可能已经注意到日志显示执行 main.py 所使用的 python 路径(版本)不一致。
大胆猜测:
- pip 命令安装的包默认指向 python3.9,而不是 python3.10.1?
- 难道系统环境变量配置的 pip 指向的是 python3.9,执行 pip 安装的包都归属在 python3.9,而使用 python3.10.1 执行就是不对的?
vscode 上运行 python 路径:
E:/python3.10.1/python.exe
pyCharm 上运行 python 路径:
C:\Users\YTS\AppData\Local\Microsoft\WindowsApps\python3.9.exe
验证猜想
修改 vscode python 解释器,将原先选择 python3.10.1 配置重新指向 python3.9,重新运行成功!
难道我的猜想是正确的?如果我电脑没有安装多个 python 版本应该就不会踩到这个坑里去了吧~
下班回家,继续排查
八点四十才下班,开了一个半小时的会!下班回到家,饭后 … … 打开电脑(家里的电脑)准备继续爬虫编写,同样的,打开 vscode 发现 scrapy 还是没有正确导入,环境配置真是一件令人头疼的事情,撸起袖子加油干。
尝试一:不应该啊~
家里的电脑也有多个 python 版本(有一个默认安装路径的版本,还有一个 anaconda 版本),先尝试切换 vscode python 版本,重新执行 scrapy 安装等:经过多次尝试最终以失败告终
尝试二:成功解决!
- 先查看环境变量,确认所配置的 python 、pip 到底指向哪里?
more .bash_profile
环境变量没问题
cd /usr/locl/bin 、ls -al
后面链接指向的地方和环境变量能够匹配上,无误。
但是发现显示的是 python3 和 pip3
!按照经验执行一次pip3 install Scrapy
观察看看情况,稍等一会 … … 安装成功、导包也正常!
有时候因为没有 VPN(科学上网),安装过程中可能会遇到下载超时 TimeoutError: The read operation timed out
错误,不要慌,可以尝试多次(我就是这样的),或者更换合适的网络即可!