Ubuntu终端运行Scrapy遇No module named 'attrs'错误求助
解决Scrapy Shell启动时的
ModuleNotFoundError: No module named 'attrs'问题 问题原因
你的Scrapy依赖的Twisted库需要导入attrs的Factory和define,但当前Python环境(~/.local/lib/python3.10/site-packages)无法读取系统目录(/usr/lib/python3/dist-packages)里的attrs,或者系统安装的attrs版本(21.2.0)与Twisted存在兼容性问题。
解决方案
方案1:升级用户目录下的attrs
运行以下命令,强制为Python3.10安装/升级attrs到用户可读写的目录:
python3.10 -m pip install --user --upgrade attrs
完成后再次尝试启动scrapy shell。
方案2:使用虚拟环境(推荐新手)
虚拟环境可以隔离不同项目的依赖,彻底避免系统环境混乱:
- 安装虚拟环境工具:
python3.10 -m pip install --user virtualenv - 创建Scrapy专属虚拟环境:
virtualenv -p python3.10 scrapy_env - 激活虚拟环境:
激活后命令行前缀会显示source scrapy_env/bin/activate(scrapy_env),表示已进入隔离环境。 - 在虚拟环境内重新安装Scrapy:
pip install scrapy - 启动Scrapy Shell:
scrapy shell
方案3:检查环境一致性
确认Scrapy使用的Python版本与你安装attrs的版本一致:
- 查看Scrapy关联的Python版本:
scrapy runpython --version - 查看当前pip对应的Python版本:
pip --version
如果两者版本不一致,必须用Scrapy对应的Python版本执行pip命令,比如Scrapy用python3.10,就始终用python3.10 -m pip代替pip。
内容的提问来源于stack exchange,提问作者M a m a D
相关产品推荐
相关产品推荐

